Как я могу отправить данные в определенный сокет?

1

Моя проблема в том, что текущее решение для отправки определенного сокета, использующего библиотеку "ws" с node.js, недостаточно.

Причина в том, что, если я подключаюсь с несколькими вкладками к серверу websocket с тем же идентификатором пользователя, который определен на стороне клиента, он будет ссылаться только на последнее соединение с указанным идентификатором пользователя.

Это мой код:

// Server libraries and configuration   
var server = require("ws").Server;
var s = new server({ port: 5001});

// An array which I keep all websockets clients
var search = {};

s.on("connection", function(ws, req) {
  ws.on("message", function(message){
    // Here the server process the user information given from the client
    message = JSON.parse(message);
    if(message.type == "userinfo"){
      ws.personName = message.data;
      ws.id = message.id;
      // Defining variable pointing to the unique socket
      search[ws.id] = ws;
      return;
    }
  })
})

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

Пример Если вы не поняли:

  1. Клиент подключается к серверу с ID: 1337
  2. поиск [1337] определяется как → websocket 1
  3. Новое соединение с тем же ID: 1337
  4. поиск [1337] становится вместо этого переменной, ссылающейся на websocket 2 вместо
Теги:
websocket

1 ответ

0

Websockets предоставляют средства для создания "сокета" с низкой задержкой между браузером и сервером.

Обратите внимание, что клиентом здесь является браузер, а не вкладка в браузере.

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

  • 0
    Спасибо за разъяснение. Это, однако, не решает мою проблему. Мне интересно, как я могу обрабатывать информацию, которую я дал с вашей помощью.
  • 0
    Я бы решил вашу проблему, назначив пользователей отдельным документам (представленным вкладками браузера) и отправив эти данные вместе с любыми вызовами веб-сокетов. Это будет дифференцировать пользователей по документу / вкладке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню