Я хочу включить "socket.io" в мой проект nodejs.Я передал аргументы к маршрутам из app.js , как показано ниже.
app.js :
var io = require('socket.io')(server);
io.on('connection', function(socket) {
socket.emit('clients', { event:'connected', exData1: 'A', exData2: 'B' });
socket.on('server', function (data) {
console.log('Received data from client: ', data);
});
});
require('./routes/project')(router,io)
Затем я переправил егок контроллеру из маршрута.
routs / projects.js :
module.exports = (router,io) => {
const controller = require('./../controllers/project.ctrl')(io);
router.route('/projects/:id').get(controller.getProject)
...
}
Я не могу получить доступ к аргументу "io" из собственного метода.
controllers / project.ctrl.js :
module.exports = (io) => {
var module = {};
// console.log('IO 1: ',io) // io is accessible in here
module.getProject = (req, res, next) => {
console.log('IO 2: ',io) // io is undefined in here :(
Project.findById(req.params.id).exec((err, project)=> {
if (err) res.send(err)
else if (!project) res.sendStatus(404)
else {
if (io) {
io.emit('clients', { event:'project_viewed' });
console.log('Emitted');
} else {
console.log('io not found :( !!!!!')
}
return res.send(project)
}
next()
})
}
...
return module;
}
Как получить доступ к аргументу io из метода модуля nodejs?