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

212
Views
io.sockets.adapter.rooms[roomId] devuelve indefinido después de usar socket.join[roomId]?

He estado tratando de crear una especie de juego multijugador donde los usuarios crean las salas en socket.io, pero unir a un usuario a una sala ha sido difícil, y recientemente me di cuenta de que parece que las salas no se están creando realmente. Sé con certeza que la función "handleNewRoom" se está ejecutando, ya que genera una ID y la envía a la interfaz, por lo que sé "socket.join (roomId);" también se está ejecutando, pero incluso en la misma función "io.sockets.adapter.rooms[roomId];" devuelve indefinido (esta línea está puramente allí para la prueba, quise llamarla solo en la función handleJoinRoom para ver si la habitación existe, pero la moví aquí para que sea más rápido verificar la existencia)

He estado jugando con socket.io un poco en este proyecto, por lo que podría haber algo muy simple que me falta, así que aquí está mi archivo server.js completo. Por lo que he leído, el comando socket.join[roomId] debería crear una habitación independientemente de su existencia, y luego io.sockets.adapter.rooms[roomId] debería devolver un Mapa de la habitación especificada, pero para algunos razón por la que no lo hace. ¿Algunas ideas?

 const express = require("express"); const app = express(); const path = require("path"); const http = require("http"); const server = http.createServer(app); const { Server } = require("socket.io"); const io = new Server(server); // pull the function that randomly generates an ID const { makeid } = require("./utils"); // set a variable with all the rooms const socketRooms = {}; // set the path for the frontend app.use(express.static(path.join(__dirname, "../front"))); const PORT = process.env.PORT || 3000; // start the server server.listen(PORT, () => console.log(`Server running on port ${PORT}`)); // on a new connection to the main server io.on("connection", (socket) => { console.log("User has connected"); socket.on("newRoom", handleNewRoom); socket.on("joinRoom", handleJoinRoom); let users = []; function handleNewRoom() { let roomId = makeid(5); socket.join(roomId); socketRooms[socket.id] = roomId; socket.emit("roomId", roomId); socket.number = 1; socket.emit("init", 1); const room = io.sockets.adapter.rooms[roomId]; if (room) { console.log("I definitely exist"); } } function handleJoinRoom(roomId) { const room = io.sockets.adapter.rooms[roomId]; let allUsers; if (room) { allUsers = room.sockets; console.log("I'm here"); } console.log(allUsers); console.log(roomId); let numSockets = 0; if (allUsers) { numSockets = Object.keys(allUsers).length; } if (numSockets === 0) { socket.emit("unknownRoom"); return; } socketRooms[socket.id] = roomId; socket.join(roomId); socket.number = 2; socket.emit("init", 2); socket.emit("roomId", roomId); } });
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!