当 flask-socketio 决定删除 socketio 会话时,如何捕获事件?

How do I catch an event when flask-socketio decides to delete a socketio session?

注意:flask-socketio 会话不是下面提到的用户会话。

我正在重组我的 React 应用程序以处理由 URL 中的字符串定义的多个 User Sessions。每当浏览器 tab/window 连接到服务器 URL 中带有 User Session 的服务器时,我会将其记录为 User Session 的连接,以及相同 [=] 的多个连接11=] 将存储在列表中。

我发现 request.sid 可能是识别我提到的这些连接的正确方法,每当来自浏览器的新连接时,我都可以将 request.sid 的值添加到列表中 tab/window 建成。每个 tab/window 都分配了一个不同的 sid,即 socketio session id,并且多个 socketio session id 属于我定义的单个 User Session

但是,我不知道什么时候浏览器连接因网络断开而丢失。通常是通过心跳机制来处理的,flask-socketio已经内置了心跳,所以我在想,当内置的心跳终于超过过期时间的时候,能不能捕捉到一个事件,这样我就可以继续删除了连接列表中的 sid

有 ideas/suggestions 给我吗?提前致谢!

您可以收听 disconnect 事件:

@socketio.on('disconnect')
def client_disconnected():
    # remove request.sid from your application state