Я хочу создать объект socket.IO в своем приложении, и я хочу сделать его доступным извне в моем приложении, не используя GLOBALS или хаки, а также убедитесь, что загружается только один экземпляр.Могу ли я заставить require() получать один экземпляр объекта каждый раз, когда я его вызываю?
Поразмыслив, я пришел с этим модулем
var io = null;
// This module is a siglenton. It initializes itself
// the first time require() calls it and all the
// next times it simply returns the object that was
// initally created
module.exports = function(server){
// If io is not initialized, initialize it before returning
if(!io)
{
io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
//Do stuff
});
});
}
return io;
}
Это, кажется, работает хорошо в теории, но на практике она продолжает генерировать новые объекты на каждый раз, когда
var http_server = http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
var a = require('my_io')(http_server);
var b = require('my_io')();
console.log(a === b); //Echoes false
я упускаю что-то Вот? Как я должен это делать?