Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

227
Views
Parece que el iPhone no puede mantener la conexión con el servidor usando socket.io

Estoy creando una aplicación basada en navegador usando node.js y socket.io. Permite a los usuarios crear un juego y unirse a una sala usando un código de sala (algo así como Jackbox Games, si lo has visto). Aquí está el problema que estoy teniendo. En mi computadora portátil, la conexión permanece abierta, pero si me conecto con mi teléfono, la conexión se cierra aleatoriamente. He confirmado esto de la siguiente manera:

En el lado del cliente, tengo este código:

 const socket = io(); socket.on('ping', (data) => { showMessage('info', 'ping', 500); socket.emit('pong', data); }); socket.on('error', (data) => { showMessage('error', data.message, 2000); });

Inicializamos el socket y luego emitimos inmediatamente un 'pong' cada vez que el servidor nos envía un 'ping'. ShowMessage es una función que muestra un mensaje en la pantalla; este es simplemente un diagnóstico.

En el lado del servidor, tengo:

 const socket = (http, server) => { const io = require('socket.io')(http, { pingInterval: 1000, pingTimeout: 1000, }); io.listen(server); setInterval(() => { pingTime = Date.now(); io.emit('ping', null); }, pingInterval); io.on('connection', (socket) => { console.log(`A user has connected from ${socket.handshake.address}`); console.log(`\tID: ${socket.id}`); } }

Aquí está el problema. En mi computadora, puedo ir a localhost:3000 y ver el mensaje "ping" parpadeando en la pantalla. Continúa hasta que mato el servidor. Cuando lo hago en mi iPhone 11 (usando Chrome), el mensaje "ping" parpadea un poco y luego se detiene, presumiblemente cuando se cierra el enchufe. La configuración de pingInterval y pingTimeout en el lado del servidor significa que el socket se volverá a conectar con bastante rapidez. Desafortunadamente, como la aplicación que estoy tratando de construir es un zumbador para un juego basado en la velocidad (piense en Jeopardy: la primera persona en presionar el botón responde la pregunta), solo volver a conectarse no es suficiente, realmente preferiría si el zócalo permanecería abierto. ¿Hay alguna forma de obligarlo a permanecer abierto?

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!