使用Flask-SocketIO将消息发送到默认房间

时间:2016-05-28 09:01:56

标签: python flask flask-socketio

我正在尝试使用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不是每个连接客户端的默认空间吗?

0 个答案:

没有答案