2016-01-10 3 views
3

Повторный вопрос, но я не нашел идеального ответа в качестве решения. Пожалуйста, помогите мне решить эту проблему.ExpressJS + Socket.IO Маршрутизация

Моего App.js

var routes = require('./routes/index'); 
    var users = require('./routes/users'); 
    var media = require('./routes/media'); 
    var widget = require('./routes/widget'); 
    var display = require('./routes/displays'); 
    var device = require('./routes/deviceinfo'); 

    app.use('/', routes); 
    app.use('/display', display); 


    var server = http.createServer(app); 
    var io = require('socket.io')(server); 
    io.set('transports', ['polling', 'websocket']); 

Показать маршруты: «маршруты/display.js»

У меня есть код, чтобы вставить дисплей, как только дисплей создается событие должны излучать в список устройств.

Эмит следует написать в режиме успешного восстановления.

 var express = require('express'); 
     var router = express.Router(); 
     router.post('/save', action_save_displays); 
     function action_save_displays(req, res){ 
     display.save(req,body , function(err , display){ 
       if(!err){ 
       res.json(display); 
       //io.sockets.emit("displaycreated", display); 
       } 
     }) 
     } 
     module.exports = routes; 

Как передать io.sockets.emit в файле маршрутов/display.js. действительно ценят ваше руководство. как отправить объект сокета на маршруты, чтобы включить событие emit.

ответ

1

Вы можете поменять местами требует вокруг немного, и просто передать socket.io в display.js файл

var routes = require('./routes/index'); 
var users = require('./routes/users'); 
var media = require('./routes/media'); 
var widget = require('./routes/widget'); 

var server = http.createServer(app); 
var io  = require('socket.io')(server); 
var display = require('./routes/displays')(io); // here 

var device = require('./routes/deviceinfo'); 

app.use('/', routes); 
app.use('/display', display); 

io.set('transports', ['polling', 'websocket']); 

и получить его в файле display.js

var express = require('express'); 
var router = express.Router(); 

module.exports = function(io) { 

    router.post('/save', function(req, res) { 
     display.save(req.body , function(err, display){ 
      if(!err){ 
       res.json(display); 
       io.sockets.emit("displaycreated", display); 
       } 
     }); 
    }); 

    return router; 
} 
+0

Привет adeneo, Я получение проблемы в app.use после добавления вышеуказанного кода. –

Смежные вопросы