Websocket. Раздельное подключение

Есть админка с бэком на ноде. Суть: пользователь авторизуется. Вводит ссылку на сайт. Нажимает старт -> запрос на сервер -> запускается селениум -> между селениумом и клиентом образуется соединение по вебсокетам -> селениум отсылает данные на фронт.

Суть вопроса: зашёл с 2 разных аккаунтов. Ввёл ссылку на 1 из них и запустил. Вебсокеты начали слать данные 2 аккаунтам. Я же хочу, чтобы они слали только инициатору запроса. Что для этого надо?

На сервере стоит обработчик сокетов на порте 8080. Соответственно клиенту я тоже указываю этот порт. Надо как-то динамически его изменять для каждого из пользователй?


Ответы (1 шт):

Автор решения: Дмытрык

const userOnline = {};

wsServer.on('connection', (ws, req) => {
  const id = Math.random();
  userOnline[id] = ws;
  setInterval(() => {
    sendMessageToUser(id)
  }, 2000)
})

function sendMessageToUser(id) {
  userOnline[id].send('message', "I'am here")
}
Хранить ли массив идентификаторов онлайн-юзеров в БД - нет. Кроме идентификатора, Вам же еще необходимо хранить данные самого подключения, чтобы иметь возможность отправить сообщение пользователю

→ Ссылка