Если вы хотите избежать использования отдельных комнат, вы можете просто отслеживать соединения самостоятельно. Вы можете сделать что-то вроде этого
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);
}
});
}
Это возможное решение по сравнению с использованием комнат, если у вас есть какие-либо вопросы, дай мне знать.