【问题标题】:How to use socket.io in node server using router, controller and index.js?如何使用路由器、控制器和 index.js 在节点服务器中使用 socket.io?
【发布时间】:2021-03-04 10:54:52
【问题描述】:

我想在我的控制器中实现 socket.io。我该怎么做?我有以下设置

index.js

const express = require('express');
const bodyParser = require('body-parser');
const http = require('http');
const app = express();
const cors = require('cors');
const morgan = require('morgan');
const router = require('./router/router');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());
app.use(morgan('combined'));

router(app);

// Server setup
const port = process.env.PORT || '8000';
const server = http.createServer(app);

server.listen(port);
console.log(`>~~~~~~~~~~~~~< Server Listening on Port - ${port} >~~~~~~~~~~~~~~<`);

路由器.js

const controller = require('../controller/controller');

module.exports = app => {
    app.get('/greeting', controller.greeting);
}

controller.js

module.exports = {
    greeting(req, res, next){
        res.send({greeting: "Hello World!"});
    }
}

有没有办法将以下方法放入控制器文件并使用路由器文件中的路由访问它?

io.on('connection', function(socket){
    socket.on('message', function(msg){
        io.emit('message', msg);
    });
});

我不想让我的 index.js 文件乱七八糟。

【问题讨论】:

    标签: javascript node.js express sockets socket.io


    【解决方案1】:

    初始化io变量时可以设置成express:

    app.set('io', io);
    

    然后通过req.app访问,例如:

    req.app.get('io').emit('some:event');
    

    【讨论】:

    • 你能再描述一下吗@LawrenceCherone
    • 您在该行之前定义的io.on('connection'... 将其设置为app
    猜你喜欢
    • 2022-12-03
    • 2020-02-25
    • 2018-05-21
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2022-01-03
    • 2020-07-08
    • 2015-02-19
    相关资源
    最近更新 更多