如何使用socket.io向不同的用户发送不同的通知

我是socket.io的新手,已经掌握了基本的连接方法。但是我想知道如何向不同的用户发送不同的通知。 例如,有用户1 4 ,而 A类 D 。每个用户可能订阅了不同的类别。参见下表

USER   | CATEGORY
1      | A
2      | A
4      | A
2      | B
4      | B
1      | C
2      | C
3      | C
4      | C
3      | D
4      | D

因此,如果将任何新帖子添加到任何类别,则所有订阅的用户都应收到相应的通知。我知道这听起来很傻,但是我真的很困惑,是否需要创建具有类别ID的房间以及如何将所有订阅的用户加入该房间等等。

任何帮助都会很大。谢谢。

IT756623839 回答:如何使用socket.io向不同的用户发送不同的通知

如果您希望避免使用单个房间,则可以自己跟踪连接。你可以做这样的事情

var clients = [];
io.sockets.on('connection',function(socket) {
   clients.push({     //Store information on the client when they connect
      id: socket.id,conn: socket,category: []
   });
   socket.on('disconnect',function() {
      clients = clients.filter(client => client.id != socket.id);  //Remove the disconnecting client
   });
});

然后,一旦您要进行类别设置,就可以执行以下操作:

function updateCat(categoryName,updateData){
   clients.forEach(client => {
      if(client.category.includes(categoryName)){   //Check if the client is subscribed
         client.conn.emit('category_update',updateData);
      }
   });
}

如果您对我有任何疑问,这是使用房间的可能解决方案。

本文链接:https://www.f2er.com/3153571.html

大家都在问