flask socket io 私聊

flask socket io private chat

如何在flask socket io中发送个人消息?我有关于 request.sid 的提示,但我不知道如何才能得到我正在发送消息的人的 request.sid?如何为发送者和接收者分配一个公共房间?

if user_exist:
        @socketio.on('private message', namespace='/message/')
        def join(msg):
            join_room(request.sid)
            room = request.sid
            emit("my response",{ "data" : msg['data'] },room=room)

这里的request.sid指的是发送者的sid而不是接收者的sid,那么我怎样才能给他们分配同一个房间呢?

您有几种方法可以做到这一点。

当每个客户端连接时,您可以将分配给该客户端的 request.sid 与您的用户信息相关联。例如,您可以将其添加为用户数据库中的额外字段。然后,当您需要向单个客户端发送消息时,在您的数据库中查找 sid,然后将其作为 emit() 调用中的 room 参数传递。

另一个可能更简单的选择是在连接时将每个客户端放在他们自己的房间里。例如,您可以将每个客户分配到一个以提供的用户名命名的房间。然后,您只需在 emit() 调用中传递 room=username 即可向用户发送消息。