如何将消息广播到Socket.IO中某个命名空间的客户端?

以下是来自socket.io网站的示例:

var io = require('socket.io').listen(80); var chat = io .of('/chat') .on('connection', function (socket) { socket.emit('a message', { that: 'only' , '/chat': 'will get' }); chat.emit('a message', { everyone: 'in' , '/chat': 'will get' }); }); var news = io .of('/news') .on('connection', function (socket) { socket.emit('item', { news: 'item' }); }); 

通常我使用io.sockets.emit(…)向客户端广播数据。 但是如何将消息广播到与命名空间连接的客户端呢? 换句话说,如何将消息发送给订阅了新闻的所有客户端,而不是那些订阅了聊天的订阅者?

更新:我想我知道答案:

 news.sockets.emit(...); 

我对么?

从github官方的例子来看:

 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.join('justin bieber fans'); socket.broadcast.to('justin bieber fans').emit('new fan'); io.sockets.in('rammstein fans').emit('new non-fan'); }); 

所以,如果你想发送一个消息给所有连接的客户端,你可以使用io.sockets.in('namespace').emit('message')

您可以尝试使用以下内容:

 io.of('/news').emit('data', data); 

在我的情况下,它的工作原理(版本"socket.io":"^1.0.0-pre2" )。