我正在尝试使套接字连接在Express Router中工作。 我试过发射,它可以工作。我已经尝试过套接字发射,并且可以工作。 似乎无法弄清楚为什么套接字连接不起作用。
我搜索的范围很广,但似乎找不到正确的解决方案。
尝试过
req.io.sockets.join('abc')
req.io.socket.join('abc')
req.io.join('abc')
main.js文件
const http = require('http')
const express = require('express')
const mongoose = require('mongoose')
const socketio = require('socket.io')
const app = express()
const server = http.createServer(app)
const port = 8000
const io = socketio(server)
//Socket IO
require('./middleware/socket')(io)
// Importing Router
const userRouter = require('./routes/user')
app.use(express.json())
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*')
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE')
res.setHeader('Access-Control-Allow-Headers', 'Origin, Accept, X-Requested-With,content-type, Authorization')
res.setHeader('Access-Control-Allow-Credentials', true)
req.io = io
next()
});
app.use(userRouter)
//Port
server.listen(port, () => {
console.log('Server is up on port', port)
})
user.js文件
const express = require('express')
const router = express.Router()
// Testing
router.post('/testing', (req,res) => {
req.io.sockets.join('abc') // Error.TypeError:req.io.sockets.join is not a function
req.io.emit('Hello') // Works
req.io.sockets.emit('Hello') // Works
res.send('hello')
})
module.exports = router
socket.js文件
module.exports = (io) => {
io.on('connection', (socket) => {
console.log('A New Connection')
socket.on('disconnect', () => {
console.log('Connection Disconnected')
})
})
}
谢谢大家