重启 Supervisor 对 FlaskSocketIO 的影响
Restarting Supervisor and effect on FlaskSocketIO
在我的 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
和 start
我的项目通过 supervisor
。在这一点上,为什么我得到与上面相同的输出?我本以为在 initial connect
之后,venue_id
会从 session
中删除,因此 request.namespace.disconnect()
会被调用?
有人可以向我解释一下这里的事件顺序吗?
谢谢
Socket.IO 客户端有一个内置的重新连接逻辑。如果服务器消失,就会出现预期的断开连接,但客户端立即开始再次连接,显然很快就会成功,因为重新启动有一个停机时间非常短。
在我的 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
和 start
我的项目通过 supervisor
。在这一点上,为什么我得到与上面相同的输出?我本以为在 initial connect
之后,venue_id
会从 session
中删除,因此 request.namespace.disconnect()
会被调用?
有人可以向我解释一下这里的事件顺序吗?
谢谢
Socket.IO 客户端有一个内置的重新连接逻辑。如果服务器消失,就会出现预期的断开连接,但客户端立即开始再次连接,显然很快就会成功,因为重新启动有一个停机时间非常短。