Flask socket io 私聊

san*_*ipt 2 flask python-3.x flask-socketio

如何在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)
Run Code Online (Sandbox Code Playgroud)

这里的 request.sid 指的是发送者的 sid 而不是接收者的 sid,那么我该如何分配他们两个同一个房间呢?

Mig*_*uel 5

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

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

另一个可能更简单的选择是在每个客户端连接时将它们放在自己的房间中。例如,您可以将每个客户分配到以提供的用户名命名的房间。然后,你可以简单地通过将消息发送到用户room=usernameemit()电话。