类型错误:无法读取未定义的属性(读取“发出”)

问题描述 投票:0回答:1

我正在尝试使用套接字创建实时视频聊天应用程序。

这是我的 server.js 代码:

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) => {
        //console.log(roomId, userId)
        socket.join(roomId)
        socket.to(roomId).broadcast.emit('user-connected', userId)
    })
})


server.listen(3000)

这是我得到的错误:

TypeError: Cannot read properties of undefined (reading 'emit')
    at Socket.<anonymous> (C:\Users\desktop\Desktop\videochat\server.js:22:36)
    at Socket.emit (node:events:520:28)
    at Socket.emitUntyped (C:\Users\desktop\Desktop\videochat\node_modules\socket.io\dist\typed-events.js:69:22)
    at C:\Users\desktop\Desktop\videochat\node_modules\socket.io\dist\socket.js:466:39
    at processTicksAndRejections (node:internal/process/task_queues:78:11)

我该如何解决这个问题?

node.js sockets socket.io
1个回答
0
投票
const express = require('express')
const app = express()
const server = require('http').Server(app)
const io = require('socket.io')(server)
//import uuid to generate unique id for everyone
const { v4: uuidV4 } = require('uuid')
//link ejs file to view in browser
app.set('view engine', 'ejs')

app.use(express.static('public'))

app.get('/', (req, res) => {
    res.redirect(`/${uuidV4()}`)
  });
  
//new url
app.get('/:room', (req, res) => {
    res.render('room', { roomId: req.params.room })
  });
io.on('connection',socket =>{
    socket.on('join-room', (roomId)=>{
        socket.join(roomId);
        socket.to(roomId).emit('user-connected');
    })
});
server.listen(3030)
© www.soinside.com 2019 - 2024. All rights reserved.