クライアント側でソケット接続を閉じるにはどうすればよいですか?
私は使っている:
- ソケット.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)。
最初のページへのアクセスではデータを 1 回取得し、リロードまたは 2 回目のアクセスではデータを 2 回取得します。
サーバー側の接続は、ページのリロード時およびページを離れると自動的に閉じられます。
ただし、クライアント側では、接続はまだ開いています。
クライアント側で接続を閉じたり、すでに開いている接続があるかどうかを確認するにはどうすればよいですか?
更新
私は今、次のことを試しました:(クライアント側)
window.onbeforeunload = function(e) {
socket.disconnect();
};
これにより、クライアント側で切断イベントがトリガーされますが、それでも 2 回または 3 回の応答が返されます。