我有一个网站,我只希望客户端一次能够有 1 个 WebSocket 连接(当他们打开另一个选项卡而已经有另一个连接显示时,我向他们显示错误)。
我正在开发一个客户端解决方案,在请求连接时将本地存储中的标志更新为 true(如果标志已经为 true,则不会请求),然后我侦听beforeunload
事件并设置本地存储标志如果该选项卡具有打开的连接,则为 false。
这似乎工作得很好,除了当用户突然关闭他们的计算机并且因此 beforeunload 永远不会触发的边缘情况,所以当他们重新打开他们的计算机时,本地存储标志被卡在 true 并且他们被卡住无法在任何选项卡中连接。
是否有在关闭之前调用的事件,我可以将本地存储标志设置为 false?
如果没有,客户端是否有另一种解决方案来跟踪它在所有选项卡上只有 1 个 WebSocket 连接,因此如果已经有一个连接,它可以阻止连接?
window.addEventListener('beforeunload', this.setFlagToFalse);