node.jsでsocket.ioを使用していて、自分のルートの1つに接続イベントハンドラがあります。各リフレッシュ時にSocket.ioの接続が盛り上がる
app.io.on('connection', function(socket) {
console.log('connect');
socket.on('disconnect', function(){
console.log('disconnect');
res.end();
});
});
私はこのルートを呼び出しているページを更新するたびに、単一のリフレッシュに、メッセージを「接続」私は5回を更新した場合、私は5を持っ終わるだろう、例えば、アップ追加し続けるように思われます、ログに記録されます。
これを制限する良い方法はありますか?
ありがとうございます!
編集:私は繰り返し更新すると
、私はこのエラーを取得:
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit
私は上限を増やすことができますが、私はノー正解だ気持ちを持っています。
私はこれを実行していますが、動作しますが、接続ハンドラがルート外で最初に定義されている場合、ルートコード内のデータをソケット接続ハンドラに渡す必要があります。私のルートからのオブジェクト、私の接続ハンドラに戻る? – dzm
配列を使用して、http-requestから送られてくるオブジェクトを格納し、接続ハンドラ内で読み取ることができます。しかし、私は接続しているクライアントにhttp-requestを使ってデータを送ることを前提としています。この場合、 'app.io.emit( 'myEvent'、{hello world '});'あなたのリクエストハンドラの中で。 – stewe
パーフェクト、そう、これはうまくいくはずです。ありがとうございます – dzm