сокет.io не сохраняет соединения

#node.js #socket.io

#node.js #socket.io

Вопрос:

У меня есть следующий код в моем модуле приложения.

 var socket_io = require( 'socket.io' );
const io = socket_io();
io.on( "connection", function( socket ) {   
    console.log(io.sockets.connected[socket.id]); 
}
  

Это возвращает сокет.

Следующая функция в моем модуле приложения возвращает undefined:

 var emit_to_socket = function (id) {
    console.log(io.sockets.connected[id]);
}
  

Когда я использую io.emit(), клиент получает сообщение; однако сообщение транслируется всем клиентам:

  var emit_to_socket = function (id) {
    io.emit('message');
 }
  

Мне нужно знать, как отправлять сообщения в определенный сокет.

Комментарии:

1. Вы не показываете нам, как вы звоните emit_to_socket(id) . Вы должны использовать io.to(id) , и это будет работать до тех пор, пока id значение является действительным и текущим. Итак, нам нужно было бы посмотреть, откуда вы получаете этот идентификатор и как вы его используете.

Ответ №1:

Вы можете использовать

 socket.to(<desired_socket_id>).emit('message')
  

Ниже приведен пример из документации:https://socket.io/docs/server-api/#socket-to-room

 io.on('connection', (socket) => {
  socket.on('say to someone', (id, msg) => {
    // send a private message to the socket with the given id
    socket.to(id).emit('my message', msg);
  });
});