Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

222
Visualizações
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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda