Entonces, estoy tratando de conectar a varios usuarios a una sala donde se puede compartir el video, pero sigo recibiendo un error cada vez que me uno a una sala que es Cannot read property 'emit' of undefined que se lanza para el socket.to(roomId).broadcast.emit('user-connected', userId) línea socket.to(roomId).broadcast.emit('user-connected', userId) . No estoy seguro de qué está causando esto, y cualquier ayuda sería genial. Salud.
const express = require('express') const app = express() const server = require('http').Server(app) const io = require('socket.io')(server) const { v4: uuidV4 } = require('uuid') app.set('view engine', 'ejs') app.use(express.static('public')) app.get('/', (req, res) => { res.redirect(`/${uuidV4()}`) }) app.get('/:room', (req, res) => { res.render('room', { roomId: req.params.room }) }) io.on('connection', socket => { socket.on('join-room', (roomId, userId) => { socket.join(roomId) socket.to(roomId).broadcast.emit('user-connected', userId) // This line here socket.on('disconnect', () => { socket.to(roomId).broadcast.emit('user-disconnected', userId) }) }) }) server.listen(3000)Para transmitir a todos los clientes en una habitación en particular, simplemente use socket.to(roomId).emit(...) . No necesita usar la propiedad .broadcast .
Si tengo razón, está siguiendo el video Zoom Clone de Web Dev Simplified, estaba enfrentando el mismo problema, pero la omisión de la propiedad .broadcast funciona bien.
socket.broadcast.to(roomId).emit("user-connected", userId);funcionó para mí