【问题标题】:Detect Websocket close connection when the users close browser?当用户关闭浏览器时检测Websocket关闭连接?
【发布时间】:2018-11-26 02:23:16
【问题描述】:

我在我的项目中使用 HTML5 websocket 和 nodejs 来创建一个简单的聊天。

到目前为止一切正常。

但是,我需要弄清楚如何检测已连接的用户是否以某种方式失去了连接,尤其是他们是否关闭了浏览器等。

我尝试了以下代码。

我可以像这样成功连接:

wss.on('connection', function(ws, req) {

//do my stuff here/////
console.log('connection started');

});

但是,当我通过关闭浏览器断开连接时,我在控制台中看不到任何内容。

我使用此代码检测连接关闭:

wss.on('closed', function(ws) {
        console.log('connection closed');
});

如果我遗漏了什么或者做错了什么,有人可以告诉我吗?

提前致谢。

编辑:

这似乎有效:

  ws.on("close", function() {
    console.log("closed");
  });

【问题讨论】:

    标签: javascript node.js websocket


    【解决方案1】:

    正如this 帖子中所讨论的,默认的 Websocket 实现没有检测网络断开连接的方法,只能检测与用户的有意断开连接。我建议您尝试使用Socket.IO,因为它会与您正在寻找的类似,并且可以检测到断开连接。这是一个例子:

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

    使用 Socket.IO 的一个缺点是您必须在客户端上使用 JS 库而不是使用原始 WebSocket,但您将能够查看客户端何时断开连接。

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 1970-01-01
      • 2016-07-22
      • 2019-01-17
      • 2016-05-15
      • 1970-01-01
      • 2021-11-06
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多