如何在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(...);
我是对的吗?
Here is a sample from socket.io website:
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' });
});
normally I use io.sockets.emit(...) to broadcast data to the clients. But how to broadcast messages to clients connected with namespace? In other words how to send message to all clients subscribed to news, and not to those who subscribed to chat?
UPDATE:
I guess I know the answer:
news.sockets.emit(...);
am I correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自官方 github 上的示例:
因此,如果您想向所有连接的客户端发送消息您可以使用 io.sockets.in('namespace').emit('message') 命名空间。
From an official example on github:
So if you want to send a message to all the connected clients in a namespace you can use
io.sockets.in('namespace').emit('message')
.您可以尝试使用以下内容:
就我而言,它有效(版本
“socket.io”:“^1.0.0-pre2”
)。You can try to use the following:
In my case it works(version
"socket.io":"^1.0.0-pre2"
).