Моя проблема в том, что текущее решение для отправки определенного сокета, использующего библиотеку "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;
}
})
})
Как вы можете видеть, каждый раз, когда подключается сокет с одним и тем же идентификатором, он будет ссылаться на последний.
Пример Если вы не поняли:
Websockets предоставляют средства для создания "сокета" с низкой задержкой между браузером и сервером.
Обратите внимание, что клиентом здесь является браузер, а не вкладка в браузере.
Если вам нужно управлять несколькими сеансами пользователя между браузером и сервером, вам нужно написать код, чтобы сделать это самостоятельно.