【问题标题】:flask socket io private chat烧瓶socket io私聊
【发布时间】:2017-01-23 17:40:30
【问题描述】:

如何在烧瓶套接字 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,那么我怎样才能将它们分配到同一个房间呢?

【问题讨论】:

    标签: python-3.x flask flask-socketio


    【解决方案1】:

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

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

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

    【讨论】:

    • 嘿 Miguel,我想第一种方法是我可以实现的完美方法。
    猜你喜欢
    • 2020-08-05
    • 1970-01-01
    • 2018-08-07
    • 2017-11-18
    • 2013-04-20
    • 2019-05-09
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多