用户关闭浏览器时检测Websocket关闭连接?

时间:2018-06-16 15:17:57

标签: javascript node.js websocket

我在项目中使用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");
  });

1 个答案:

答案 0 :(得分: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库而不是使用原始WebSockets,但是您将能够查看客户端何时断开连接。