我正在尝试使用套接字创建实时视频聊天应用程序。
这是我的 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)
我该如何解决这个问题?
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)