[英]Forward all messages to socket.io room
如果客户端向某个房间发出消息,我如何将该消息发送给房间中的所有其他客户端?
当前在服务器上,我必须做:
io.on('connection', function (socket) {
socket.on('join', function (room) {
socket.join(room);
socket.on('food.create', function (foods) {
socket.broadcast.to(room).emit('food.create', foods);
});
socket.on('food.update', function (foods) {
socket.broadcast.to(room).emit('food.update', foods);
});
socket.on('food.remove', function (foods) {
socket.broadcast.to(room).emit('food.remove', foods);
});
});
});
io.listen(3000);
很好,现在只有3条消息,但是当我添加更多消息时,它会变长。 socket.io是否提供一种自动将所有消息从一个客户端转发到该房间中的所有其他客户端的方法?
这是socket.io文档页面上的示例,该页面显示了如何对数据使用事件和key:value集:
var io = require('socket.io')();
io.on('connection', function(socket){
socket.emit('an event', { some: 'data' });
});
为什么不使用这种构造来传递消息呢? 将您的数据与您希望各个客户端将这些数据作为key:value集合一起做的事情放入数据对象中。 像这样:
io.to('your_room').emit('food', { todo: 'delete', name: 'macaroni' });
});
然后,服务器可以简单地将该事件广播给会议室中的所有其他客户端。 这样,您根本不必在服务器上过滤邮件。
然后,其他客户端会收到该消息,并根据data.todo和data.name值执行所需的任何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.