socket.io在快速路由中发出不正常的情况

时间:2017-12-12 06:14:50

标签: angularjs node.js express socket.io

我在Node.js中使用soket.io它工作正常,但路由文件中存在问题。

以下是我的代码和流程。 我有server.js文件,我在其中定义io

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


//io from server.js
io.on('connection', function (socket) {

  socket.emit('getDevicePostData', { message : 'Hi from server!!' });
  socket.on('sendDevicePostData', function("Hi from server") {});
});


// pass io to routes file
var smart_control = require('./smart_control.js')(io);
app.use('/', smart_control);

smart_control.js文件代码位于

之下
module.exports = function(io) {

    router.post('/emitdata', function(req, res, next) {
        io.sockets.emit('getDevicePostData', { message : 'Hi from route!!' });
    });
return router;
}

以上路线的发射有时会起作用,有时不起作用。

这个发射是从角度js调用的。我在角度中使用https://www.npmjs.com/package/angular-socket-io包 角度控制器中的代码如下:

mySocket.on('getDevicePostData', function(data) {

                    console.log(data);
                 });

这里mySocket是工厂。

我的代码有什么问题。仅来自路径文件的主要问题。

1 个答案:

答案 0 :(得分:1)

您只需将io.sockets.emit替换为io.emit

此处io.sockets.emit将仅向连接的客户端发出信号,并且当您点击API时,您的套接字工厂可能不会启动。