Поведение сокета комнаты по умолчанию (Socket.io) - PullRequest
0 голосов
/ 04 августа 2020

Я читаю документацию по Socket.io для комнат topi c в разделе Комната по умолчанию : https://socket.io/docs/rooms/

В нем упоминается следующее:

For your convenience, each socket automatically joins a room identified by its own id. This makes it easy to broadcast messages to other sockets:

io.on('connection', socket => {
  socket.on('say to someone', (id, msg) => {
    socket.to(id).emit('my message', msg);
  });
});

1 - Из приведенного выше кода означает ли это, что одна и та же комната может быть определена каждым из пользователей 'собственный идентификатор сокета, подключенного к этой комнате. Т.е. комната может быть идентифицирована по идентификаторам сокетов нескольких пользователей, если эти пользователи подключены к комнате?

2- Передается ли широковещательное сообщение (msg) в комнату всем сокетам других пользователей , включая или исключая пользовательский сокет, который передал сообщение?

Продолжение ...

Примеры вариантов использования

  • широковещательные данные каждому устройство / вкладка данного пользователя
io.on('connection', async (socket) => {
  const userId = await fetchUserId(socket);

  socket.join(userId);

  // and then later
  io.to(userId).emit('hi');
});

3- В приведенном выше примере кода userId, которое мы получаем, такое же, как socketId, или это другое?

4- Также означает ли это, что мы используем userId для доступа к комнате (к которой подключен пользователь), чтобы: сначала присоединиться к комнате; затем передать сообщение hi не только пользователю, но и всем другим пользователям в комнате? Или я неправильно понял этот момент?

Продолжение ...

  • отправлять уведомления о данном объекте
io.on('connection', async (socket) => {
  const projects = await fetchProjects(socket);

  projects.forEach(project => socket.join('project:' + project.id));

  socket.on('update project', async (payload) => {
    const project = await updateProject(payload);
    io.to('project:' + project.id).emit('project updated', project);
  });
});

5- В коде выше , Я не понял, что он делает. В частности, что представляет projects, который мы получаем из объекта сокета?

6- Что делает socket.join('project:' + project.id)?

7- Является ли 'update project' обычным событие или часть собственного кода Socket.io (то есть такое же, как событие 'connection')?

8- Что означает payload, который мы передаем слушателю событий?

Заранее спасибо.

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