2

我正在尝试在用户的 id 命名空间上监听新的 socketIO 连接。用户 ID 存储在烧瓶会话对象中。

 @socketio.on('connect', namespace=session['userId'])
 def test_connect():
    emit('newMessage')

此代码产生以下错误:

raise RuntimeError('working outside of request context')

如何让上述连接侦听器在请求上下文中运行?

谢谢!

4

1 回答 1

2

不幸的是,这无法做到,因为命名空间不是动态的,您必须使用静态字符串作为命名空间。

SocketIO 中命名空间的想法不是添加有关连接的信息,而是允许客户端与服务器打开多个单独的通道。命名空间允许 SocketIO 协议将所有这些通道复用到单个物理连接中。

您要做的是向服务器提供连接的输入参数。为此,只需将值添加到您的有效负载中:

@socketio.on('connect', namespace='/chat')
def test_connect():
    userid = session['userId']
    # ...
于 2015-02-10T15:18:28.833 回答