Как сделать рассылку n-ым подключенным клиентам?

Для реализации рассылки n-ым подключенным клиентам в Node.js можно использовать модуль Socket.IO.

Socket.IO - это библиотека, которая предоставляет веб-сокеты и полнофункциональные двусторонние связи в реальном времени между клиентом и сервером. Она обладает множеством возможностей, включая поддержку нескольких подключений, обмен сообщениями между клиентами и сервером, а также рассылку сообщений определенным подключенным клиентам.

Для начала установим модуль Socket.IO. Откройте терминал и введите следующую команду:

npm install socket.io

Затем импортируем модуль Socket.IO в наш файл приложения:

const io = require('socket.io')();

Создадим экземпляр сервера Socket.IO:

const server = require('http').createServer();
const io = require('socket.io')(server);

Теперь нам нужно настроить обработчики событий для подключений и сообщений:

io.on('connection', (socket) => {
  // Обработчик события подключения нового клиента
  console.log('Новый клиент подключен');

  // Обработчик события получения сообщения от клиента
  socket.on('message', (data) => {
    console.log('Получено сообщение:', data);

    // Рассылка сообщения всем подключенным клиентам
    io.emit('message', data);
  });

  // Обработчик события отключения клиента
  socket.on('disconnect', () => {
    console.log('Клиент отключен');
  });
});

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

В клиентской части кода требуется подключиться к серверу Socket.IO и отправлять сообщения:

const socket = io();

// Отправка сообщения на сервер
socket.emit('message', 'Привет, сервер!');

// Обработчик события получения сообщения от сервера
socket.on('message', (data) => {
  console.log('Получено сообщение от сервера:', data);
});

Таким образом, при отправке сообщения от любого клиента, оно будет рассылаться всем подключенным клиентам. Вы можете расширить этот пример и добавить свою логику обработки сообщений и других событий с использованием Socket.IO.