2015-07-14 9 views
5

In meinem index.html (HTML/Javascript) ich habe:Neustarten Betreuer und der Wirkung auf FlaskSocketIO

$(document).ready(function(){ 
     namespace = '/test'; 

     var socket = io.connect('http://' + document.domain + ':' + location.port + namespace); 

     socket.on('connect', function() { 
      socket.emit('join', {room: 'venue_1'}); 
     });  


     socket.on('my response', function(msg) { 
      $('#log').append('<br>Received #' + ': ' + msg.data); 
     });  
    }); 

Auf meinem Server ich habe:

@socketio.on('connect', namespace='/test') 
def test_connect(): 
    if session.get('venue_id'): 
     emit('my response', {'data': 'Connected'})  
     session.pop('venue_id', None) 
    else: 
     request.namespace.disconnect() 

@socketio.on('join', namespace='/test') 
def join(message): 
    join_room(message['room']) 
    room = message['room'] 
    emit('my response', {'data': 'Entered the room ' + message['room']}) 

Nach der Anmeldung Ich habe session['venue_id'] = True und index.html bewegen. Der Ausgang ich erhalte, ist:

Received #: Connected 
Received #: Entered the room venue_1 

Meine Frage: Nach dem ersten Lauf, halte ich die index.html Seite öffnen und dann stop und start mein Projekt durch supervisor. An diesem Punkt, warum bekomme ich die gleiche Ausgabe wie oben? Ich hätte gedacht, dass nach der initial connect, venue_id würde aus der session entfernt werden und somit würde request.namespace.disconnect() aufgerufen werden?

Könnte mir bitte jemand die Abfolge der Ereignisse hier erklären?

Dank

Antwort

2

Der Socket.IO Client eine Reconnect Logik eingebaut. Wenn der Server dort weggeht ist die erwartete trennen, aber sofort startet der Client wieder zu verbinden, und es gelingt ihm offensichtlich sehr schnell seit dem Neustart hat eine sehr kurze Ausfallzeit.