Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2021, 12:33
Аспирант
Отправить личное сообщение для HotReboot Посмотреть профиль Найти все сообщения от HotReboot
 
Регистрация: 06.11.2017
Сообщений: 42

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
}));

мне послать именно ему сообщение отправить на сервер имя пользователя? А может я вообще извращаюсь и есть способ более профессиональный? Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2021, 12:55
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Использование 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);
        }
    });
};

Последний раз редактировалось Vlasenko Fedor, 27.05.2021 в 12:57.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно всплывающее сообщение для сайта bursnabby Работа 4 30.05.2015 20:21
Система всплывающих сообщений ruslan_mart Ваши сайты и скрипты 32 27.05.2015 21:28
Помогите разобраться с Socket IO rdbn AJAX и COMET 0 17.09.2014 16:59
Nodejs net socket server and android socket client kames AJAX и COMET 9 31.08.2014 20:49
Это только для профи(всплывающее сообщение) Derack Элементы интерфейса 6 23.07.2009 14:22