Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Socket.io Сообщение пользователю (https://javascript.ru/forum/node-js-io-js/86716-socket-io-soobshhenie-polzovatelyu.html)

ureech 09.10.2025 10:35

Socket.io Сообщение пользователю
 
Привет. Не получаю сообщение когда отправляю конкретному юзеру

var contactIn = [];
var client=[];

io.on('connection', function (socket) {
socket.on('add_user', function(userId){
client[userId] = socket.id;
socket.join(userId);
        if (!contactIn.includes(socket.user_id)) {
            contactIn.push(socket.user_id);
        }
}
socket.on('new_message', data => {
if (contactIn.includes(data.contact_id)) {
const targetId = client[data.contact_id];
 socket.in(targetId).emit('my_mess', data);
/* Пробовал и так 
 socket.to(targetId).emit('my_mess', data);
io.to(targetId).emit('my_mess', data);
*/

}
}
}


Причём отправка всем работает
socket.emit('my_mess', data);


Клиент на java

ksa 09.10.2025 11:15

Цитата:

Сообщение от ureech
Не получаю сообщение когда отправляю конкретному юзеру

Есть подозрение, что ты не верно вычисляешь "socket.id" пользователя - в итоге шлешь сообщения в "никуда"...

Посмотри что у тебя в targetId, перед отправкой сообщения.

ureech 09.10.2025 12:08

Да нет, в том то и дело, всё верно. Проверял. Выводил лог
socket.on('add_user', function(userId){
 console.log('client : ', client[userId]+"**"+userId);
}

 socket.on('new_message', data => {
...
 console.log('targetSocketId: ', targetSocketId+"***"+data.contact_id);
}

ureech 09.10.2025 12:47

Нашёл ошибку. У меня происходит переподключение, когда открываю страницу с контактом. И соответственно меняется socket.id
Спасибо за участие. Пойду решать).


Часовой пояс GMT +3, время: 09:06.