Flask socketio 如何检测用户与哪个房间断开连接?

Flask socketio 如何检测用户与哪个房间断开连接?,flask-socketio,Flask Socketio,我有一个应用程序,我需要将当前用户刚刚断开连接的房间传递到服务器。用户可以通过多个选项卡进入多个房间 我可以检测到用户以这种方式离开,但它似乎无法让数据随它一起传递: @socketio.on('disconnect') def on_disconnect(): print(session['id']) print("user left " ) 在我的客户端,我尝试了以下方法: socket.on('disconnect', function () {

我有一个应用程序,我需要将当前用户刚刚断开连接的房间传递到服务器。用户可以通过多个选项卡进入多个房间

我可以检测到用户以这种方式离开,但它似乎无法让数据随它一起传递:

@socketio.on('disconnect')
def on_disconnect():
    print(session['id'])
    print("user left " )
在我的客户端,我尝试了以下方法:

socket.on('disconnect', function () {
     socket.emit('user_disconnect', {"channel": "{{symbol}}"});
 });

不过,这种发射永远不会传递到服务器。我猜在调用之前窗口会关闭或更改吗?如何在断开连接事件中向服务器传递数据?

我相信我已经找到了解决方案

利用
request.sid
,我可以将文件室名称与此sid一起存储在服务器端加入事件的列表中

@socketio.on('join')
def on_join(data):
active_rooms.append(json.dumps({'room':data['channel'],'socket_id':str(request.sid)}))

触发断开连接事件后,我可以查看相同的
sid
,并将其用作列表中的查找。对于每个套接字连接,sid似乎是唯一的,因此多个选项卡将产生一个新的sid。

是否尝试在断开连接处理程序中调用
rooms()
函数?这会给你客户所在房间的列表。