重启Supervisor并对FlaskSocketIO产生影响

时间:2015-07-14 05:23:41

标签: javascript python flask flask-socketio

index.html (HTML/Javascript)我有:

$(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);
        });       
    });

Server我有:

@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']})

登录后,我设置session['venue_id'] = True并转到index.html。我得到的输出是:

Received #: Connected
Received #: Entered the room venue_1

我的问题:首次投放后,我打开index.html页面,然后通过stop startsupervisor我的项目。在这一点上,为什么我得到与上面相同的输出?我原以为initial connect之后,venue_id会从session移除,因此request.namespace.disconnect()会被调用吗?

有人可以向我解释一下事件的顺序吗?

由于

1 个答案:

答案 0 :(得分:2)

Socket.IO客户端内置了一个重新连接逻辑。如果服务器消失,则会出现预期的断开连接,但是客户端立即再次开始连接,显然很快成功,因为重启的停机时间非常短