如何关闭客户端的套接字连接?
我在用:
- 套接字.io 0.9
- 节点.js 0.10.15
- 表达 3.3.4
即:调用localhost/test
——服务器端
var test = io
.of('/test')
.on('connection', function (socket) {
console.log('open socket: ' + socket);
socket.on('disconnect', function () {
console.log('disconnected event');
//socket.manager.onClientDisconnect(socket.id); --> endless loop with this disconnect event on server side
//socket.disconnect(); --> same here
});
});
- 客户端
var socket = io.connect('http://localhost:3000/test');
socket.on('disconnect', function () {
console.log('disconnect client event....');
});
socket.emit('getInitData', function (data) {
.. do something with data
});
如果我加载测试页面,我需要来自服务器的一些值(getInitData)。
在第一次访问页面时,我获得了一次数据,在重新加载或第二次访问时,我获得了两次数据,依此类推。
服务器端的连接会在页面重新加载时自动关闭,如果您离开页面。
但在客户端,连接仍然打开。
如何关闭客户端的连接或检查是否已经有打开的连接?
更新
我现在尝试了以下方法:(客户端)
window.onbeforeunload = function(e) {
socket.disconnect();
};
这会在客户端触发断开事件,但我仍然得到两次或三次响应。