es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo asignar un identificador personalizado a un socket que funcione con socket.id en lugar de socket.conn.id.

Cuando intento asignar un socket.id personalizado:
js
io.engine.generateId = (req) => {
return 13543;
}
io.on("connection",(socket)=>{
console.log(socket.id) // registra jkpK0bLe8_O4uVG5AAAA
console.log(socket.conn.id) // registra 13543
})

El problema es que generateId cambia la identificación de socket.conn.id y no la de socket.id en sí.

Por lo tanto, quisiera que socket.id sea igual a 13543, no socket.conn.id.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según el fragmento de código proporcionado, parece que estás intentando asignar un valor personalizado a socket.id anulando la función generateId del motor del socket. Sin embargo, el problema que estás experimentando es que la función generateId está generando un valor de id personalizado para la conexión del socket (socket.conn.id) en lugar del socket en sí (socket.id).

    Para resolver este problema, deberás modificar la función generateId para asignar directamente el valor de id personalizado a socket.id en lugar de socket.conn.id. Este es un fragmento de código actualizado que debería lograr esto:

    io.engine.generateId = (req) => {
      return 13543;
    }
    
    io.on("connection", (socket) => {
      socket.id = io.engine.generateId();
      console.log(socket.id); // debería imprimir 13543
      console.log(socket.conn.id); // debería seguir imprimiendo un id único de conexión
    });
    

    Con este cambio, socket.id debería ser igual a 13543 como se desea. Ten en cuenta que ahora estamos asignando explícitamente el valor de id personalizado a socket.id en lugar de confiar en que la función generateId lo modifique indirectamente.

Comments are closed.