@XiNull

Как получить данные по ключу wss.clients без перебора всех пользователей?

Здравствуйте. Речь идёт о сервере (WebSocket).
В wss.clients все пользователи, чтобы получить информацию о конкретном пользователе, приходится всех перебирать и сравнивать:
const WebSocket = require('ws');
const wss = new WebSocket.server({ port:8080 });
...
wss.clients.forEach(function each(client) {
  if(id === client.id) {
        console.log('ID: ' + client.id)
        console.log('KEY:' + client. key)
   }
})

Можно ли как-то получить по конкретному id или key данные без перебора всех подключённых пользователей?
P.S. wss.clients - не массив.
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
YuriyVorobyov1333
@YuriyVorobyov1333
Software Developer
Вы можете создать свой объект для хранения пользователей и при коннекте сохранять туда Id, далее вы можете обращаться к конкретным юзерам
myClients = [];
wss.on('connection', function(ws) {
    myClients.push(ws);
});


Также можете покапаться в гите socket.io, это обертка над стандартными сокетами, думаю, там можно найти более корректное и масштабируемое решение
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы