Ich habe einen Code-Setup und Ich würde gerne wissen, ob es Müll sammelt, so dass mein System wird nicht beginnen Swapping und Freeze/Absturz.Wird mein 'neues Objekt' Müll auf Socket getrennt werden
Das Setup sollten Sie bleiben innerhalb der normalen Parameter des Systems eine unbestimmte Menge an Zeit laufen können unter der Annahme (zB so nicht anschließen 1.000.000 Benutzer auf einen einzelnen Thread Prozess alle zur gleichen Zeit)
Ich habe eine vereinfachte Version gemacht.
// 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;
So ist neuen Handler "Garbage Collection, nachdem eine" Steckdose trennen Ereignis eingetreten ist?
Wenn nicht, wie soll ich den Code ändern?
Zuerst dachte ich, das
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
})
});
das Problem lösen könnte, aber das schafft nur einen Verweis auf die ‚neuen Handler‘ und entfernt die gleichen Bezug auf trennen. Das bedeutet nicht notwendigerweise, dass der "neue Handler" ebenfalls entfernt wird. Es könnte immer noch zuhören und/oder Sachen machen.
Danke Kumpel! = D Und löschen ist in der Tat besser! – Dex