【问题标题】:How to use socket.io across diffrent routes in node.js如何在 node.js 中跨不同路由使用 socket.io
【发布时间】:2019-05-28 09:12:31
【问题描述】:

我的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;

所以,我想知道

1) 如果我需要使用socket.io,我是否需要使用http 模块来创建服务器。

2) 我如何将 socket.io 用于不同的路由。

我在 stackoverflow 上找到了与我的问题相匹配的帖子,即 thisthisthis。但我不认为,这对我有用。所以请帮助我。

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:
    1. 您可以使用http模块或socket.io文档中的其他模块来使用socket.io
    2. 我不确定你的想法。但是当你想要实现 socket.io 时。我认为您应该运行另一个节点应用程序。 (意味着您有 2 个 nodejs 应用程序。1 个用于节点 http,1 个用于 socket.io 应用程序)。在初始化 socket.io 应用程序https://socket.io/docs/server-api/#new-Server-httpServer-options 时可以使用path 选项。因为当您部署到生产环境时。您应该在代理服务器旁边运行您的 socket.io 应用程序(例如:nginx)。 Socket.io 基本上支持多传输和协议。因此,如果与 http restful 一起使用。如何配置从 nginx 到 socket.io 应用程序的连接映射,如何设置错误处理程序?。

    在您的情况下: + 创建新文件 socket.js:

    // socket.js
    var http = require('http')
    var socket_io = require('socket.io')
    
    function init_socket(app) {
        const server = http.Server(app)
        const io = socket_io(server, { path: 'your-path-want-for-socket-io' }) // default: /socket.io/
    }
    
    import {init_socket} from 'socket.js'
    init_socket(app)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2021-05-14
      • 2017-06-29
      相关资源
      最近更新 更多