我在node js
应用程序中使用不同的路由,并且必须在每条路由中使用socket.io
来制作我的node
和react 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的问题相匹配的帖子,分别是this,this和this。但是我不认为这对我有用。所以请帮助我。
答案 0 :(得分:0)
http
模块或socket.io文档中的其他模块来使用socket.io
path
后,可以使用https://socket.io/docs/server-api/#new-Server-httpServer-options
选项。因为当您部署到生产时。您应该在代理服务旁边(例如:nginx)运行socket.io应用。 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)