关闭浏览器时,浏览器可以执行“关闭”WebSocket 事件吗?
Posted
技术标签:
【中文标题】关闭浏览器时,浏览器可以执行“关闭”WebSocket 事件吗?【英文标题】:Can a browser execute "on close" WebSocket event when closing the browser? 【发布时间】:2021-05-13 21:34:38 【问题描述】:当浏览器或选项卡关闭时,我有一个小型 sn-p 向给定端点发送 XHttpRequest
以表示 WebSocket 连接已异常断开。
wsConnection.onclose = function(event)
axios.post('/state', reason: 'abnormal' );
;
是否保证浏览器将在选项卡/窗口关闭时执行事件?如果不是,那如何检测到“客户端被强行断开”?
【问题讨论】:
【参考方案1】:没有。您甚至无法保证您的 ajax 调用已执行(例如崩溃或互联网连接中断)。
您应该在服务器端使用client.ping()
来检测客户端是否有连接丢失。 RFC 6455 强制 WebSocket-Clients 响应服务器的 ping 请求。
如果状态码是 1006,connection was closed abnormal。
【讨论】:
以上是关于关闭浏览器时,浏览器可以执行“关闭”WebSocket 事件吗?的主要内容,如果未能解决你的问题,请参考以下文章