在发布请求时发出套接字



我试图根据poster的post请求为套接字创建emit,但遇到了一些问题。我在这里发现了一个问题,但它似乎对我不起作用。我的app.js 中有这个代码

应用程序.js

const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const http = require('http').createServer(app)
const eventsRoute = require('./routes/eventsRoute')
const io = require('socket.io')(http, {
cors: {origin: "*"},
path: '/api/events'
})
io.of('/api/events/').on('connection', socket => console.log('connected'))
...
app.use('/api/events', eventsRoute(io))
module.exports = app

在这里我得到了eventsRoute.js代码。这里,我认为,是的主要问题

事件路由.js

const express = require('express')
const errorHandler = require('../utils/errorHandler')
const router = express.Router()
const returnRouter = io => {
router.post('/', async (req, res) => {
try {
io.sockets.emit('create', req.body)
res.status(200).json({message: 'successful'})
} catch (e) {
errorHandler(e)
}
})
router.get("/", function (req, res) {
try {
res.send({})
} catch (e) {
errorHandler(e)
}
})
return router
}

module.exports = returnRouter

在我的客户端,我在script标记中有一些代码。这是

<script src="https://cdn.socket.io/3.1.3/socket.io.min.js"></script>
<script>
const socket = io('ws://localhost:5000', {path: '/api/events'})
socket.on('create', data => {
console.log(data)
})
</script>

所以,主要原因是。。。所有文件。让我们从index.js开始。我正在导出应用程序。相反,我必须导出http。然后在app.js中,我将不得不将带有套接字的行更改为该

const io = require('socket.io')(http, options)
io.of('/api/events')
.on('connection', socket => {
app.use('/api/events', eventsRoute(socket))
})

最新更新