繁体   English   中英

如何使用路由器、控制器和 index.js 在节点服务器中使用 socket.io?

[英]How to use socket.io in node server using router, controller and index.js?

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

索引.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);
}

控制器.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 文件变得混乱。

您可以在初始化io变量时设置为 express :

app.set('io', io);

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM