Я использую Node.js с ws (библиотека сокетов), и у меня возникают небольшие проблемы с поиском сокета определенного пользователя.
, когда пользователь подключается к моему сокету серверу, я должен держать его гнездо objct в большом массивном объекте его идентификатор пользователя или socketID так:Socket - отправить сообщение пользователю ID
var bigMassiveObject = {};
ws.on('connection', function(socket){
var userID //somehow get the userID
bigMassiveObject[userID] = socket;
// to find the socket
socket = bigMassiveObject[userID];
socket.send("hi");
})
так, что позже я могу послать ему сообщение, что ID, но не лучше ли держать его идентификатор socketID? таким образом, мы не хранить все гнездо, но только ID, а затем каким-то образом (я не; знаю) послать ему сообщение по этому ID
это то, что я ищу:
var smallObject = {};
ws.on('connection', function(socket){
var userID //somehow get the userID
smallObject[userID] = socketID;
// to find the socket
var socket = generateSocketObjectBySocketID(socketID);
socket.send("tada!");
})
так вопрос в том, есть ли в любом случае генерировать сокет, через socketID (или useID)? так что мы не будем хранить все эти большие объекты сокетов в памяти и не будет никакой утечки памяти тоже :)
насчет того же пользователя при подключении двух различных вкладок/браузеров/экземпляров.? – coma
, это не проблема, мы можем иметь несколько идентификаторов socketID для одного и того же ID пользователя –