Socket ws и индивидуальное сообщение
Здравствуйте. Не могу сообразить как отправить сообщение конкретному пользователю. В интернете сплошные чаты с примерным кодом отсылки сообщения
for (let u of users) { u.connection.send(message) } Я думал как: во-первых при подключение юзера посылает строку типа webSocket.onopen = function(){ webSocket.send(`sessionId:${user}`) }; и записать на сервере в redis соответственно client_redis.set(sessionId, JSON.stringify(user), redis.print) что бы потом прочитать данные по соединению. Но получилось, что JSON.stringify далеко не весь объект преобразует в JSON и теряет его часть. А array.push и map.set не заменяют значение по ключу, а записывают в конец. Не подскажите как по имени пользователя посылаемые вместе с сообщением webSocket.send(JSON.stringify({ 'user': user, 'message': message })); мне послать именно ему сообщение отправить на сервер имя пользователя? А может я вообще извращаюсь и есть способ более профессиональный? Спасибо. |
Использование Redis в качестве брокера сообщений стр 357
Каскиаро М., Маммино Л. Шаблоны проектирования Node.js / пер. с анг. А. Н. Киселева. – М.: ДМК Пресс, 2017. – 396 с.: ил. Частичный ответ на ваш вопрос Зависит от функционала В пример, пользователю можно логиниться только с одного клиента или из многих У вас будет несколько инстансов и т.д. const send = (msg, users) => { Connections.forEach(socket => { if ('user' in socket && users.includes(socket.user.id)) { socket.emit('message', msg); } }); }; |
Часовой пояс GMT +3, время: 05:00. |