20
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SocketIOでdisconnectを瞬時に取得

Last updated at Posted at 2015-08-24

私は、アプリとNodeJSでチャットのアプリケーションを作成している者です

私が開発中に気づいたSocketIOについてメモしたいと思います。

デバックしている時に下記のことがわかりました

サーバ側でdisconnectイベントが発生する時にタイムラグがある。

クライアント側でsocketを閉じてからサーバ側でdisconnectを取得するまで約30秒あることが分かりました。

解決方法模索

stackoverflowで解決方法を探しました

これを見つけました。
http://stackoverflow.com/questions/32089796/i-want-to-detect-disconnect-event-as-soon-as-app-user-close-the-socket

どうやら、クライアント側で明白に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) {
    //イベント処理...
});

以上、ご参考になれば幸いです。

20
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?