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, время: 20:07. |