【问题标题】:Can a browser execute "on close" WebSocket event when closing the browser?关闭浏览器时,浏览器可以执行“关闭”WebSocket 事件吗?
【发布时间】:2021-05-13 21:34:38
【问题描述】:

当浏览器或选项卡关闭时,我有一个小型 sn-p 向给定端点发送 XHttpRequest 以表示 WebSocket 连接已异常断开。

wsConnection.onclose = function(event) {
  axios.post('/state', { reason: 'abnormal' });
};

是否保证浏览器将在选项卡/窗口关闭时执行事件?如果不是,那如何检测到“客户端被强行断开”?

【问题讨论】:

    标签: javascript browser websocket


    【解决方案1】:

    没有。您甚至无法保证您的 ajax 调用已执行(例如崩溃或互联网连接中断)。

    您应该在服务器端使用client.ping() 来检测客户端是否有连接丢失。 RFC 6455 强制 WebSocket-Clients 响应服务器的 ping 请求。

    如果状态码是 1006,connection was closed abnormal

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 2013-06-06
      • 1970-01-01
      • 2010-11-04
      相关资源
      最近更新 更多