Socket IO транслируется каждому клиенту с идентификатором сокета - PullRequest
0 голосов
/ 29 марта 2020

Мне становится комфортно с socket.io. Это действительно качает.

Я знаю, что с сервера я могу либо:

Ответить клиенту socket:

socket.emit(event, data);

Трансляция другим клиентам:

socket.broadcast.emit(event, data);

Широковещательная рассылка всем клиентам без различия:

io.emit(event, data);

Но я хотел бы сделать так, чтобы l oop по клиентам до emit для каждого из них с их socket.id в качестве параметра:

io.emitEach(socket => socket.emit(event, dataWichDependsOn(socket.id)));

Можно ли этого добиться?

Я пытался это сделать:

  io.of('/').clients((error, clients) => {
    if (error) throw error;
    return clients.forEach(clientId => {
      io.to(clientId).emit(event, dataWichDependsOn(clientId));
    })
  }

Без успеха :( сообщение не похоже на emit ed.

1 Ответ

0 голосов
/ 29 марта 2020
Object.keys(io.sockets.sockets).forEach((clientId)=>{
        io.to(clientId).emit(event, dataWichDependsOn(clientId))
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...