socket.io - 从服务器端发出触发器?

时间:2015-03-18 20:45:50

标签: node.js express socket.io

如何使用socketIO从服务器端触发发射? 我的nodejs服务器上有socket.on('My_Event'),我希望通过.emit('My_Event')从我服务器上的其他位置触发该事件。
我的目标是向客户端广播一些通知数据。

服务器端 - app.js

var app = express(),
    server = http.createServer(app),
    io = require('socket.io')(server);

io.on('connection', function(socket){
    socket.on('My_Event', function(data){
        socket.volatile.emit('event', data);
    });
});

server.listen(config.listenPort, '0.0.0.0', 511, function() {
    // config.listenPort is already defined
    console.log('node Server - listening on port: ' + config.listenPort);
});

导出 - 我想要触发事件的模块

var io = require('socket.io')();

exports.addStrategy = function(app) {

  var fn = {

    doSomething : function(req, res, next) {

      // HERE I wish to trigger my socket event
      // io.emit('MY_EVENT', {}); ????

      res.status(200).json(done());
  };
  return fn;
};
到目前为止,我无法让它发挥作用。我应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

一种选择是创建一个Socket.IO的单个全局实例,最终可以在多个模块/应用程序之间共享。

global.socket = require('socket.io').listen(app);

快乐帮助!