如何在快速路由器中使用socket.join?

时间:2019-08-15 09:10:48

标签: node.js sockets express socket.io

我正在尝试使套接字连接在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')
        })
    })
}

谢谢大家

0 个答案:

没有答案