【问题标题】:Emit socket on post request在发布请求时发出套接字
【发布时间】:2021-05-01 18:22:31
【问题描述】:

我正在尝试根据邮递员的发布请求为套接字创建发射,但遇到了一些麻烦。我发现了一个问题here,但它似乎对我不起作用。我的 app.js 中有这段代码

App.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

这里我得到了 eventsRou​​te.js 代码。我认为这是主要问题

eventsRou​​te.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 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>

【问题讨论】:

  • 我可以通过一些更改使其工作:1 - 我没有在服务器选项中使用 path,2 - 我使用 ws://localhost:5000/api/events 并删除了客户端中的选项,3 - 相反在create 事件中收听(从不触发),我在socket.on('connect') 上听过 -> screenshot example

标签: node.js express sockets socket.io


【解决方案1】:

所以,主要原因在于……所有文件。让我们从 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))
    })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2017-08-06
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多