我在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是工厂。
我的代码有什么问题。仅来自路径文件的主要问题。
答案 0 :(得分:1)
您只需将io.sockets.emit
替换为io.emit
。
此处io.sockets.emit
将仅向连接的客户端发出信号,并且当您点击API时,您的套接字工厂可能不会启动。