在node.js中的不同路由之间使用socket.io

时间:2019-01-02 05:13:51

标签: javascript node.js socket.io

我在node js应用程序中使用不同的路由,现在我想在每条路由中使用socket.io来创建我的nodereact js应用程序实时。但是,我的 node js 应用程序具有以下结构。

router.js

const express = require('express');
const router = express.Router();

const worksheetController = require('../controllers/worksheet');
const attendenceController = require('../controllers/attendence');

router.route('/worksheets')
 .get(
    worksheetController.getWorksheet
 )
 .post(
    worksheetController.validateWorksheet,
    worksheetController.addWorksheet,
    attendenceController.markAttendence
 );

router.route('/attendances')
 .get(
    attendenceController.getAttendance
 );

module.exports = router;

server.js

const express = require('express');
const router = require('./router');

const app = express();
app.use('/api', router);

app.listen('5000', () => {
  console.log('Listening on port');
});

module.exports = app;

如何将socket.io用于不同的路由?

1 个答案:

答案 0 :(得分:0)

您不需要关联快速路由和socket.io事件。他们是两个不同的东西。也许您可以像在快速路由中一样,在控制器中添加相关逻辑并从socket.io事件中调用函数。

例如:

const worksheetController = require('../controllers/worksheet');

io.on('connection', function (socket) {
  socket.on('my event', function (data) {
    const myData = worksheetController.getDataForOtherEvent(data);
    console.log(myData);
  });
});