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

320
Views
Pasar datos de socket de una sesión de usuario a otra de forma no asíncrona

Estoy usando node.js y sockets y necesito obtener datos de un socket en una habitación, luego, cuando un nuevo socket se une a una habitación, comparto esos datos con la nueva sesión.

Más específicamente, estoy intentando iniciar un temporizador en el lado del cliente en el primer enchufe de la habitación, luego pasar la posición actual del temporizador al siguiente enchufe que se une a la habitación.

Estoy usando un temporizador básico como este en el lado del cliente:

 setInterval(timer, 1000); var seconds = 0; function timer(seconds){ socket.emit('clientTimer', seconds); seconds++; return seconds; }

En el lado del servidor, estoy escuchando el temporizador, luego quiero emitir esa información del temporizador al siguiente socket que se une a la sala.

 socket.on('clientTimer', function(seconds){ socket.emit('newClientTimer', seconds); });

Como estoy usando el mismo archivo js para ambos sockets, tengo esto en el lado del cliente:

 socket.on('newClientTimer', function(seconds){ console.log(seconds); });

El problema aquí es que solo emite el temporizador al cliente original con la hora actual, y el nuevo cliente comienza de nuevo en 0. Así que ahora tengo dos temporizadores en lugar de uno.

¿Es posible tomar solo la posición actual del temporizador y pasarla del servidor a la nueva conexión de la sala de forma no asíncrona? O si esa es la forma incorrecta de formular mi pregunta, sugiera una mejor y actualizaré mi título.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Lamento decirlo, pero parece que hay un largo camino por recorrer antes de que el código haga lo que estás describiendo.

El servidor no transmite el temporizador a otros clientes.

 socket.on('clientTimer', function(seconds){ socket.emit('newClientTimer', seconds); });

Deberá enviarlo a otros sockets. Tampoco puedo publicar un fragmento de código "fijo", porque no está claro cómo se realiza un seguimiento de los enchufes conectados a los otros clientes en la sala.

Este código envía el temporizador de regreso al mismo socket de donde lo recibió.

Cada nuevo cliente comienza en cero porque usa la misma página, que se inicializa con

 var seconds = 0;

Tal vez esté tratando de recibir un valor de temporizador en el cliente con

 socket.on('newClientTimer', function(seconds){ console.log(seconds); });

pero no funciona, porque el argumento llamado seconds es su propia variable y no actualiza la variable var seconds en el ámbito externo. Debido a que el nombre del argumento sombrea la variable exterior, ahora ni siquiera puede asignar de uno a otro.

Probablemente quieras algo como

 socket.on('newClientTimer', function(newSeconds){ console.log(newSeconds); seconds = newSeconds; });
over 4 years ago · Santiago Trujillo Report
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!