Насколько я знаю Express строится на промежуточных обработчиках. Но почему то я не могу получить доступ к io в своём обработчике.
Структура моего приложения
main.js
const express = require('express')
const http = require('http')
const socketIO = require('socket.io')
const morgan = require('morgan')
const bodyParser = require('body-parser')
const port = 4001
const app = express()
const server = http.createServer(app)
const io = socketIO(server)
const Routes = require('./router/test.js')
// console.log(io) здесь я могу получить доступ к io переменной
app.use(function(req,res,next){
// console.log(io) а в промежуточном обработчике не могу
req.io = io;
next();
});
app.use(morgan("dev"))
app.use(bodyParser.json())
app.use("/", Routes)
server.listen(port, () => console.log(`Listening on port ${port}`))
test.router.js
const express = require("express")
const { test } = require("../controllers/test")
const router = express.Router({mergeParams: true});
router.get('/',test)
module.exports = router
test.controller.js
exports.test = async (req,res) =>{
console.log(200)
}
Как мне сделать так что бы io соединение было доступно на уровне всего приложения?