我正在尝试在用户的id命名空间上侦听新的socketIO连接。用户ID存储在flask会话对象中。
@socketio.on('connect', namespace=session['userId'])
def test_connect():
emit('newMessage')
此代码产生以下错误:
raise RuntimeError('working outside of request context')
如何让上述连接侦听器在请求上下文中运行?
谢谢!
答案 0 :(得分:2)
不幸的是,这是无法做到的,因为命名空间不是动态的,你必须使用静态字符串作为命名空间。
SocketIO中的命名空间的想法不是添加有关连接的信息,而是允许客户端与服务器打开多个单独的通道。命名空间允许SocketIO协议将所有这些通道复用到单个物理连接中。
您要做的是提供连接到服务器的输入参数。为此,只需将值添加到您的有效负载:
@socketio.on('connect', namespace='/chat')
def test_connect():
userid = session['userId']
# ...