3

繰り返しの質問ですが、解決策として完璧な答えは見つかりませんでした。この問題を解決するために私を助けてください。

私の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']);

表示ルート: "routes/display.js"

ディスプレイを挿入するコードがあります。ディスプレイが作成されるとすぐに、デバイスのリストにイベントが発行されます。

Emit は保存成功のコールバック メソッドに書き込む必要があります。

      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;

routes/display.js ファイルで io.sockets.emit を渡す方法。ご指導をよろしくお願いいたします。イベントの発行を有効にするためにソケット オブジェクトをルートに送信する方法。

4

1 に答える 1

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;
}
于 2016-01-10T19:07:02.757 に答える