Как использовать socket.io в экспресс-маршрутах с node.js - PullRequest
0 голосов
/ 26 апреля 2018

Я использую Express с Socket.io на стороне сервера, но я не могу использовать из app.js, мне нужно, как использовать SocKet.io в маршрутах Express.

приложение.js

...  
let http = require('http').Server(app);
let io = require('socket.io')(http);

io.on('connection', (socket) => {
    console.log('user connected');
    socket.on('disconnect', function(){
        console.log('user disconnected');
    });
    socket.on('message', (message) => {
        console.log("Message Received: " + message);
        io.emit('message', {type:'new-message', text: message});    
    });  
});
...

это нормально работает, но у меня есть другие маршруты, где настраиваются мои методы, POST, GET ... EX

routActividad.js

...
function http(){ 

  this.configActividad= function(app){
    // get actividades by id
    app.get('/actividad/:NUM_ID_EMPLEADO', function(req, res) {
    //... code here...//
      .then(function (actividad) {              
        res.json(actividad);
      }).catch(error => res.status(400).send(error));
    })

   app.post('/actividad/', function(req, res){
    // code here //
   })

   app.put('/actividad/', function(req, res){
    // code here //
   })
  }
}

module.exports = new http();

как я могу использовать сокет в routActividad.js и других подобных маршрутах для использования emit или scoket.on y по этим маршрутам

app.js

...
var routesActividad = require('./routes/routesActividad');
    routesActividad.configActividad(app);
// more routes
...

спасибо

1 Ответ

0 голосов
/ 26 апреля 2018

Здравствуйте, вам просто нужно передать экземпляр IO по параметру внешнему модулю:

app.js

let http = require('http').Server(app);
let io = require('socket.io')(http);
let actividad = require('routesActividad')(io);

routActividad.js:

function http(io){ 

   //put the IO stuff wherever you want inside functions or outside



  this.configActividad= function(app){
    // get actividades by id
    app.get('/actividad/:NUM_ID_EMPLEADO', function(req, res) {
    //... code here...//
      .then(function (actividad) {              
        res.json(actividad);
      }).catch(error => res.status(400).send(error));
    })

   app.post('/actividad/', function(req, res){
    // code here //
   })

   app.put('/actividad/', function(req, res){
    // code here //
   })
  }
}

module.exports = http; //Removed new statement 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...