我正在尝试使用 Flask-SocketIO 构建通知系统。我希望服务器应该能够独立地向任何选定的客户端发送消息。我试图通过将每个客户端保持在单独的房间(默认会话 ID 房间)中来实现这一点。但是当服务器尝试发送任何消息时,我无法在客户端上看到任何消息。以下是我的代码中的相关片段:
服务器代码:
# maintain a global session id list of connected clients
sidlist = []
@socketio.on('connect')
def handle_connect():
'''
Append the new sid to the global sid list
'''
sidlist.append(request.sid)
def messenger():
'''
Simple stupid test that runs in a separate thread trying
to send messages every 10 seconds
:return:
'''
for i in range(0,100):
if len(sidlist) > 0:
idx = i % len(sidlist)
socketio.emit('server-message', 'Message sent at time: ' + str(i), room=sidlist[idx])
sleep(10)
客户代码:
$(document).ready(function(){
var socket = io.connect();
socket.on('server-message', function(msg) {
console.log('got a server message');
$('#log').append('<p>Received: ' + msg + '</p>');
});
});
我确实在服务器端看到了尝试向会话 ID 指定的房间发射的日志。但我没有看到客户端收到的消息。我错过了什么吗?SessionID 不是每个连接客户端的默认房间吗?