Socket.io отправляет сообщения только некоторым пользователям в комнате - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу отправить сообщение в комнате, используя socket.io, но в некоторых случаях я хочу пропустить некоторых пользователей в комнате, так как я могу это сделать.

В настоящее время я использую приведенный ниже код для отправки сообщения вгруппа

io.on('connection', function (socket) {
    sockets[socket.handshake.query.id]=socket;
    console.log("user_connect",socket.handshake.query );
    if(socket.handshake.query.user_type=="DRIVER"){
        socket.join('orderPool');
    }
    socket.join('USER_'+socket.handshake.query.id);


    socket.on('disconnect', function () {
        delete sockets[socket.handshake.query.id];

        console.log('user disconnected', socket.handshake.query.id);
    });

});

io.sockets.in("ROOMNAME").emit("POOL_EVENT_RECIEVED", data);

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

иногда я отключаюсь и пытаюсь снова подключиться, но я думаю, что это не твоя проблема.

Обратите внимание , что вы можете излучать в комнаты, которые существуют в определенном пространстве имен .если вы используете пространство имен по умолчанию '/', попробуйте:

io.of('/').in("ROOMNAME").emit("POOL_EVENT_RECIEVED", data);

, также вы можете прочитать cheatheet по socket.io: https://socket.io/docs/emit-cheatsheet/

0 голосов
/ 11 декабря 2018

Одним из решений является одновременное сохранение другой комнаты "<room name>-selected users" только с выбранными пользователями, которым вы хотите отправлять сообщения.Не добавляйте в эту комнату пользователей, которых вы хотите пропустить.

Поэтому, когда вы отправляете сообщения в эту комнату, пользователи, которые не были добавлены в эту комнату, не будут получать эти сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...