问题描述
在 this question 中,他们说为了仅向特定客户端广播 socket.io 事件,您需要将用户 ID 和套接字会话 ID 链接到某处。所以在我的套接字连接事件中,我想链接这两个 ID,但用户会话在 socket.io 事件中似乎不可用。有没有办法从这里的 Flask-Security/Login 访问用户 ID?
from flask_security import current_user
from app import socketio
socket_connections = {}
@socketio.on('connect')
def test_connect():
print("Client connected: " + request.sid)
# Prints None,even if authenticated
print(current_user.get_id())
# Link user ID with session ID
socket_connections[current_user.get_id() = request.sid]
解决方法
建立 Socket.IO 连接时的用户会话实际上可以在您的 Socket.IO 事件处理程序中访问,并且 current_user
也可以访问。
您没有显示您的代码,所以我无法告诉您出了什么问题,但我建议您尝试名为 sessions.py
的 Socket.IO 示例,它专门用于帮助您了解用户会话在 Socket 下的工作方式。 IO。我什至录制了一个视频,其中包含有关此的一些详细信息以及此示例应用程序的演示: