###発生していること
Node.jsとsocket.ioを用いてリアルタイムwebアプリを構築しています。
その中でlast few Gcsが発生しました。
原因として下記2つが考えられ、それぞれ対策をしました。
1.ログの書きすぎ
(テキストファイルに書き込みをしていますが1日2,3GB程度になります)
⇛ログの書き込みを削減
2.クライアント側が切断されてもsocket.idを所持したままである
2.に関しての補足
io.json.to(socket.id).emit(~~~)としてイベントを発行していますが
idを所持していると思われるため、今まで接続していたクライアント全てに飛ばしているような
挙動を示します。
例)3回ブラウザを更新すると、4回分上記のイベントが発行されているような挙動
###質問事項
下記2点について教えてください。
1.last few Gcsの対策としては上記2つで対策となっているか。
2.クライアントが切断された場合、socket.idを廃棄したいです。
以下のようなソースを試していますが、廃棄されませんでした。
何か方法はございますか。
server.js
/// socket.on("disconnect",(reason)⇛{ console.log(///); delete socket.id; } ///
###追記
下記のようにソースを書きなおしましたが
3回ブラウザを更新すると、4回分上記のイベントが発行されているような挙動は変わらず
コンソールへの出力もコメント1とコメント2で同様のIDが出力されています。
/// let clients = {}; /// sockets.on('connection', function(socket) { clients[socket.id] = socket; /// watcher.on('add'function(**){ try{ while(socket.connected){ io.json.to(socket.id).emit(~~~); } catch(e){ } )}; /// socket.on('disconnect', function() { conlose.log([socket.id]); //コメント1 delete clients[socket.id]; console.log([socket.id]); //コメント2 }); }); ///
###追記2
下記のようにソースを書きなおしました
しかしLast few GCsが起こるようになってしまいました。
以下の書き方は正しかったのでしょうか。
var chokidar = require('chokidar') var watcher = chokidar.watch /// sockets.on('connection', function(socket) { clients[socket.id] = socket; /// watcher.on('add'function(**){ try{ while(socket.connected){ io.json.to(socket.id).emit(~~~); } catch(e){ } )}; //

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/26 22:03
2017/10/26 22:05
2017/10/26 22:11
2017/10/30 04:20 編集
2017/10/29 16:20
2017/10/30 04:20
2017/11/09 10:58
2017/11/28 11:28