5

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ページを開いたままにstopstart、プロジェクトをsupervisor. この時点で、なぜ上記と同じ出力が得られるのでしょうか? initial connectの後に,venue_idが削除されてsession呼び出されると思っていたrequest.namespace.disconnect()でしょうか?

誰かがここでの一連の出来事を説明してくれませんか?

ありがとう

4

1 に答える 1

2

Socket.IO クライアントには再接続ロジックが組み込まれています。サーバーが停止すると予期される切断が発生しますが、すぐにクライアントは再び接続を開始し、再起動のダウン タイムが非常に短いため、明らかに非常に迅速に成功します。

于 2015-07-14T06:12:24.600 に答える