访问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连接之外定义的方法发出