コード設定があります。がガベージコレクトされているかどうか知りたいので、システムがスワッピングとフリーズ/クラッシュを開始しません。私の 'new Object'はソケット切断時にガベージコレクトされるでしょう
セットアップが(例えばので、すべてが同時に1つのスレッド処理への1.000.000ユーザーを接続していない)、あなたのシステムの正常なパラメータ内にとどまると仮定すると、時間の不確定な量を実行することができます
私は単純化したバージョンを作った。
// connection.js
var io, Handler;
io = require('socket.io');
Handler = require('./handler');
io.on('connection', function (socket) {
new Handler({socket: socket})
});
// handler.js
var Handler,
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
function Handler(arg) {
this.socket = arg.socket;
this.test = bind(this.test, this);
console.log('Handler', 'New connection', this.socket.id);
this.listeners();
}
Handler.prototype.listeners = function() {
return this.socket.on('test', this.test);
};
Handler.prototype.test = function() {
return console.log('SocketIO', 'test', this.socket.id);
};
module.exports = Handler;
ので「新しいハンドラ」ガベージコレクトのソケット切断イベント「後が発生しているのですか?
コードを変更する必要はありませんか?
最初に私は、これが問題
var io, connections, Handler;
io = require('socket.io');
Handler = require('./handler');
connections = {}
io.on('connection', function (socket) {
connections[socket.id] = new Handler({socket: socket});
socket.on('disconnect', function(){
connections[socket.id] = null
})
});
を解決する可能性があります。しかし、これは唯一の新しいハンドラ」への参照を作成し、切断時に、同じ参照を削除しますと思いました。必ずしも「新しいハンドラ」も削除されるわけではありません。それはまだ聞いているかもしれないし、やっているかもしれない。
ありがとうございました! = Dそして削除は本当に良いです! – Dex