Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
Javascript Websockets se desconecta en la descarga de la página

Estoy trabajando para crear un juego en línea usando Python Flass y tecnologías web que usan sockets web para permitir que el juego se ejecute en vivo. Una página del juego es un lobby, en el que se muestran todos los jugadores actuales. Si un usuario se desconecta del juego, por supuesto, debe ser eliminado de la lista de lobby.

Supuse que para que el usuario desaparezca de la lista rápidamente, el navegador del cliente deberá enviar manualmente la desconexión ejecutando socket.disconnect() o enviando otro evento personalizado cuando se descargue la página.

Desafortunadamente, parece que no puedo hacer que esto se ejecute usando el evento onunload : se ejecuta cuando se carga la página, no cuando abandonas la página. Tampoco puedo encontrar una manera de usar el evento onbeforeunload porque ya lo estoy usando para mostrar una ventana emergente de confirmación.

¡Cualquier sugerencia sobre esto sería muy apreciada! ¡Gracias por adelantado!

Mi código del lado del cliente:

 window.addEventListener("beforeunload", function(event) {if (!intentionalForward) {event.preventDefault(); event.returnValue = " "}}); window.addEventListener("unload", function () { socket.emit("test","testing unload event"); });
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Lo que sucede es que llama a socket.emit y asigna el resultado de esa llamada como detector de eventos para unload el evento. Deberías usar una función de cierre como esta:

 window.addEventListener("unload", function() { socket.emit("test","testing unload event"); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Logré que esto funcionara correctamente al obligar al cliente a conectarse usando el transporte websocket (al agregar el indicador {transports: ["websocket"]} a mi función io.connect ). Esto significa que el evento de desconexión ahora funciona en el servidor.

NB: se me pidió que instalara y usara gunicorn desde este punto, ya que el servidor de desarrollo del matraz no es compatible con websockets.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda