【问题标题】:Broadcasting in socket.io?在 socket.io 中广播?
【发布时间】:2013-08-12 09:40:11
【问题描述】:
如何在 socket.io 中所有连接的客户端之间广播消息?
我在服务器端使用带有 java (play/eclipse) 的 mrniko/netty-cosket.io 服务器,在客户端使用 socket.io.js 0.9。客户端和服务器都工作正常(即发送和接收消息)。为了保留已连接客户端的记录,我正在使用 hashMaps 并向所有已连接用户发送消息,我正在迭代 hashmap 并一一发送消息。只是想知道有没有更好的方法一次向所有连接的客户端发送消息?
任何帮助将不胜感激。
【问题讨论】:
标签:
socket.io
broadcasting
【解决方案1】:
这里是一个使用 mrniko/netty-socket.io 的例子:
Configuration config = new Configuration();
config.setHostname("localhost");
config.setPort(9092);
SocketIOServer server = new SocketIOServer(config);
BroadcastOperations bo = server.getBroadcastOperations();
// every method will broadcast messages to all server clients
bo.sendJsonObject(...)
server.start();
...
【解决方案2】:
您可以使用以下代码:
//broadcasts to all clients connected
io.sockets.emit('function', {foo:bar});
//broadcasts to all clients connected, except the sender
io.sockets.on('connection', function (socket) {
socket.on('message', function(data) {
socket.broadcast.emit('function', {foo:bar});
}
}