私は、アプリとNodeJSでチャットのアプリケーションを作成している者です
私が開発中に気づいたSocketIOについてメモしたいと思います。
デバックしている時に下記のことがわかりました
サーバ側でdisconnectイベントが発生する時にタイムラグがある。
クライアント側でsocketを閉じてからサーバ側でdisconnectを取得するまで約30秒あることが分かりました。
解決方法模索
stackoverflowで解決方法を探しましたどうやら、クライアント側で明白にsocket.disconnect()でソケットをクローズしないとサーバ側でdiscconectを即座に取得できないみたいです。
解決方法
・ソケットを閉じる場合は必ずsocket.disconnect()をする。 ・socket.io の heartbeatsを用いて設定された時間で生存確認をする上記の2つを実装することにしました。
実装
今回、下記のように設定しました。socketServer.js
var io = require('socket.io').listen(port);
io.set('heartbeat interval', 5000);
io.set('heartbeat timeout', 15000);
io.sockets.on('connection', function (socket) {
//イベント処理...
});
以上、ご参考になれば幸いです。