小编mou*_*ree的帖子

Socket.io从Express控制器发出

我是Node.js/Express的新手,我将它用作AngularJS应用程序的后端.我已经遍布StackOverflow寻求一些关于我的问题的帮助,但我似乎无法弄清楚如何将建议移植到我的代码中.

我的申请表如下:

  • 长时间运行的Scala进程会定期发送我的Node.js应用程序日志消息.它通过发布到HTTP API来实现
  • 收到帖子后,我的应用程序将日志消息写入MongoDB
  • 然后将日志消息实时发送到Angular客户端.

我遇到Node的模块问题,因为我无法弄清楚如何引用Express控制器中的套接字实例.

如您所见,在server.js中,socket.io在那里实例化.但是,我希望控制器本身logs.js能够使用socket.io实例发出.

如何在控制器中引用io?我不知道如何将io实例传递给控制器​​,以便我可以发出消息?

以下是一些Node代码:

server.js

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

require('./lib/config/express')(app);
require('./lib/routes')(app);

server.listen(config.port, config.ip, function() {
  console.log('Express server listening on %s:%d, in %s mode', config.ip, config.port, app.get('env'));
});

io.set('log level', 1); // reduce logging

io.sockets.on('connection', function(socket) {
  console.log('socket connected');
  socket.emit('message', {
    message: 'You are connected to the backend through the socket!'
  });
});

exports = module.exports = app;
Run Code Online (Sandbox Code Playgroud)

routes.js

var logs = require('./controllers/logs'),
  middleware = require('./middleware');

module.exports = function(app) …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express socket.io angularjs

6
推荐指数
1
解决办法
4273
查看次数

标签 统计

angularjs ×1

express ×1

javascript ×1

node.js ×1

socket.io ×1