我在项目中使用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");
});
答案 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,但是您将能够查看客户端何时断开连接。