Node.js: socket.io关闭客户端连接
Node.js: socket.io关闭客户端连接
如何在客户端关闭套接字连接?
我正在使用:
- socket.io 0.9
- node.js 0.10.15
- express 3.3.4
例如:
调用localhost/test
-- 服务器端
var test = io .of('/test') .on('connection', function (socket) { console.log('打开套接字:' + socket); socket.on('disconnect', function () { console.log('断开连接事件'); //socket.manager.onClientDisconnect(socket.id); --> 在服务器端的断开连接事件上产生无限循环 //socket.disconnect(); --> 在这里也一样 }); });
-- 客户端
var socket = io.connect('http://localhost:3000/test'); socket.on('disconnect', function () { console.log('断开连接客户端事件....'); }); socket.emit('getInitData', function (data) { .. 使用数据做一些操作 });
如果我加载测试页面,我需要从服务器获取一些值(getInitData)。
第一次访问页面时,我只获取一次数据,重新加载或第二次访问时,我会获取两次,以此类推。
在服务器端,当重新加载页面或离开页面时,连接会自动关闭。
但是在客户端,连接仍然保持打开状态。
如何在客户端关闭连接或检查是否已经存在打开的连接?
更新
我现在尝试了以下(客户端):
window.onbeforeunload = function(e) { socket.disconnect(); };
这将在客户端触发断开连接事件,但我仍然会收到两次或三次响应。