【问题标题】:Websocket when closing window/tab - Chrome关闭窗口/标签时的Websocket - Chrome
【发布时间】:2014-11-22 00:49:59
【问题描述】:

我只想确认当用户关闭选项卡时,任何 websocket(s) 在页面上打开并连接到服务器并立即关闭(或最终?)。由于关闭选项卡时页面的控制台消失了,我不确定如何测试。

我想确认这一点的原因是要弄清楚它是否可以在 websocket 关闭事件上触发函数调用。

仅在 Chrome 上进行测试,websockets 连接到我在 Amazon EC2 上的节点服务器。

【问题讨论】:

  • 当用户关闭选项卡(或导航到不同的页面)时,套接字本身将关闭,服务器将看到 TCP 连接已断开。除了标准的“页面正在关闭”页面事件之外,不保证您可以在浏览器窗口中执行任何代码。
  • 我想我需要找到解决办法。现在我正在使用 webrtc peerconnections,因此客户端可以使用套接字来帮助它找到要连接的远程客户端。尝试调试我的实现显示了一些看起来像错误的东西 - 这是当远程对等方断开连接(通过关闭他们的选项卡)时,参与对等连接的其他对等方没有收到断开连接事件。这有点太具体了,所以我想在深入挖掘之前确保它不是别的东西。

标签: javascript node.js google-chrome websocket dom-events


【解决方案1】:

您可以使用以下 sn-p 从服务器触发页面关闭事件。

var io = require('socket.io')('http');
io.on('connection', function(socket){
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

但是您不能使用该功能触发更多的页面关闭事件。

【讨论】:

  • 我实际上并没有尝试在服务器端做任何事情。在客户端,我想确保他们与其他客户端的 webrtc peerconnection 保证在他们与服务器的套接字关闭时关闭。
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2020-09-29
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
相关资源
最近更新 更多