以下是来自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(...);
我是对的吗?
答案 0 :(得分:1)
来自官方example on 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')
。
答案 1 :(得分:0)
您可以尝试使用以下内容:
io.of('/news').emit('data', data);
就我而言,它有效(版本"socket.io":"^1.0.0-pre2"
)。