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

131
Views
El cliente no recibe la emisión de Socket.io del servidor

He estado experimentando con sockets últimamente y me encontré con un error que no estoy seguro de por qué está sucediendo.

Creé una página de índice con un botón titulado createRoom, que intenta crear un lobby/sala en la que otros usuarios pueden conectarse.

 //index.js createBtn.addEventListener('click', () => { socket.emit("create-room", socket.id) }) socket.on("redirect-host", roomId=>{ console.log("I JUST CREATED: " + roomId); window.location.replace("/master") //lobby })
 //server.js io.on("connection", socket => { console.log("a user connected"); socket.on("create-room", hostId => { //receives the id of the person creating lobby let roomId = Math.round(Math.random() * (999999 - 100000) + 100000); socket.join(roomId)//generates room and then sends emit back to redirect host console.log("Socket " + hostId + " created room: " + roomId); socket.to(hostId).emit('redirect-host', roomId); }) })

En el índice, hay un botón en el que puede hacer clic para generar una sala que emite una sala de creación al servidor, que luego crea una sala y emite el número de sala y le dice a server.js que redirija a una pantalla de lobby (/master).

Sin embargo, nada parece suceder al presionar el botón. Mi principal sospechoso es que "redirect-host" se envía al lugar equivocado, pero soy nuevo en los sockets, así que no puedo estar seguro.

Gracias.

EDITAR: ¡Resuelto! Para cualquiera que se pregunte, el parámetro "socket" es el socket conectado. De acuerdo con la documentación de socketio, .to envía la emisión a todos menos a sí mismo

En su lugar utilizado,

io.in(roomId).emit('redirect-host', roomId);

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Socket representa el propio socket conectado. Mirando la documentación:

 // to all clients in room1 except the sender socket.to("room1").emit(/* ... */);

En cambio, creo que desea que el servidor envíe algo a TODOS los clientes en la sala. Para eso, usa io.in

 io.in(roomId).emit('redirect-host', roomId);
about 4 years ago · Juan Pablo Isaza 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!