访问socket.on('connection')闭包之外的套接字

下面是app.js的一部分,它和客户端有socket连接

io.sockets.on('connection', function (soc) { soc.emit('news', { status: 'connected' }); }); 

我想要做的就是访问连接闭包之外的soc var,就像这样

 io.sockets.on('connection', function (soc) { do something magical here so I can access soc from outside }); soc.emit('news', { status: 'connected' }); 

需要添加什么额外的技术来存档这个结构?

你需要在你的服务器代码中引用你的socket iovariables:

io.sockets.emit('news', { status: 'connected' });

所以在你的示例代码中,它可能看起来像这样:

 io.sockets.on('connection', function (soc) { emit(); }); function emit(){ io.sockets.emit('news', { status: 'connected' }); } 

也许你可以尝试这样的事情:

 var foo; io.on('connection', function(soc){ foo = new Foo(soc); }); function Foo (socket){ this.emit = function () { if(socket) { socket.emit('msg'); } } } 

有人连接后,你可以调用foo.emit();

这个答案可能对你有帮助: 不能从socket连接之外定义的方法发出