簡體   English   中英

將所有消息轉發到socket.io房間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM