Javascript 将所有消息转发到socket.io文件室

Javascript 将所有消息转发到socket.io文件室,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,如果客户机向房间发送消息,我如何将该消息发送给房间中的所有其他客户机 当前在服务器上,我必须执行以下操作: io.on('connection', function (socket) { socket.on('join', function (room) { socket.join(room); socket.on('food.create', function (foods) { socke

如果客户机向房间发送消息,我如何将该消息发送给房间中的所有其他客户机

当前在服务器上,我必须执行以下操作:

    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文档页面的示例,演示了如何为数据使用事件和键:值集:

var io = require('socket.io')();
io.on('connection', function(socket){
socket.emit('an event', { some: 'data' });
});
为什么不使用这个结构来传递消息呢?将您的数据与您希望各个客户机将该数据作为键:值集来处理的内容一起放入数据对象中。大概是这样的:

io.to('your_room').emit('food', { todo: 'delete', name: 'macaroni' });
});
然后,服务器可以简单地将该事件广播给房间中的所有其他客户端。这样,您根本不必在服务器上过滤邮件


然后,其他客户端接收消息,并根据data.todo和data.name值执行任何操作。

能否告诉我们您希望接收多少类型的消息?积垢还不够吗?(创建-阅读-更新-删除)是的,但是对于食物以外的东西。我正在将其重构为一个函数,其中包含一个类似“food”的字符串,但仍然有点难看