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

2024-10-01 00:36:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用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)

客户代码:

^{pr2}$

我确实在服务器端看到有人试图对会话ID指定的房间进行发射的日志,但我看不到客户端正在接收的消息。我错过什么了吗?SessionID不是每个连接的客户端的默认文件室吗?在


Tags: 代码服务器id消息客户端客户机defconnect