Flask 使用UID在烧瓶插座上发射

Flask 使用UID在烧瓶插座上发射,flask,flask-socketio,Flask,Flask Socketio,我正在尝试使用flask和flask_socketio创建Skype Web,我已经知道我必须在发送私人消息时使用room参数,但到目前为止我看到的示例使用SID,如果用户重新启动页面,SID会发生变化。所以我让每个登录的用户都有自己的ID,但我不知道如何让它在emit('an_event',room=ID)上工作。如何将房间发送到我的自定义ID而不是会话ID 编辑:另一种方法,是否有任何方法使SID不更改?Flask SocketIO服务器不知道您的应用程序特定用户ID。您需要做的是在分配给每

我正在尝试使用flask和flask_socketio创建Skype Web,我已经知道我必须在发送私人消息时使用
room
参数,但到目前为止我看到的示例使用SID,如果用户重新启动页面,SID会发生变化。所以我让每个登录的用户都有自己的ID,但我不知道如何让它在
emit('an_event',room=ID)
上工作。如何将房间发送到我的自定义ID而不是会话ID


编辑:另一种方法,是否有任何方法使SID不更改?

Flask SocketIO服务器不知道您的应用程序特定用户ID。您需要做的是在分配给每个客户端连接的SID和每个客户端表示的用户ID之间创建映射。您可以通过添加连接和断开连接处理程序来实现这一点。例如:

user_to_sid={}
sid_to_user={}
@socketio.on('connect')
连接上的def(环境):
用户\u id=验证\u用户(环境)
用户到用户sid[用户id]=request.sid
sid_to_user[request.sid]=用户id
@socketio.on('disconnect')
def on_disconnect():
user\u id=sid\u to\u user[request.sid]
删除用户到用户sid[用户id]
del sid_to_用户[request.sid]

一旦有了映射,就可以很容易地找到给定用户或反之亦然的当前SID。

但是刷新页面后,SID会发生变化。如果我使用旧SID,它是否仍在工作?噢,我想我理解了您的原因如果刷新页面,断开连接处理程序将删除旧SID,然后使用新SID调用新的连接处理程序。所以字典会自动更新。