Javascript Sails.js Socket.IO使用时间框架窗口(setInterval)获取数据

Javascript Sails.js Socket.IO使用时间框架窗口(setInterval)获取数据,javascript,node.js,websocket,socket.io,sails.js,Javascript,Node.js,Websocket,Socket.io,Sails.js,您好,我开始在sails.js中使用socket.io,我想知道是否有方法或最佳实践可以获取socket.emit(在我的控制器中)每次发送的数据,而不是一次。。我尝试使用socket.get,但当我在控制台中打印值时,它们只显示一次 我将在将来使用它将数据推送到客户端,以跟踪我从不同项目的REST接口获得的项的状态 控制器代码 my_event: function(req, res){ var socket = req.socket; setInterval(function(

您好,我开始在sails.js中使用socket.io,我想知道是否有方法或最佳实践可以获取socket.emit(在我的控制器中)每次发送的数据,而不是一次。。我尝试使用socket.get,但当我在控制台中打印值时,它们只显示一次

我将在将来使用它将数据推送到客户端,以跟踪我从不同项目的REST接口获得的项的状态

控制器代码

my_event: function(req, res){
    var socket = req.socket;
    setInterval(function(){
      socket.emit('my_event', { content: 'data' })
    }, 5000)
  }
客户端代码

var c = 0;
socket.get('/mycontroller/my_event',  function (json) {
    c = c++;        
    console.log(json.content);
    console.log(c);

});

我在网络选项卡(chrome控制台)中看到,我正在以正确的时间间隔获取数据。

您正在触发
my_事件
操作,以启动
setInterval
及其循环的
socket.emit
,但您从未在客户端监听该事件。您需要的是:

var c = 0;
// Bind a listener to the "my_event' socket event
socket.on('my_event', function(json) {
    c = c++;        
    console.log(json.content);
    console.log(c);
});
// Call the backend action which will start triggering the events
socket.get('/mycontroller/my_event',  function (response) {
    console.log(response);
});
然后在服务器的
my_event
中,确保以如下内容结束

res.json({status: 'ok!'});

如果您想告诉我,
socket.get
调用成功。

谢谢,我忘了尝试,因此事件被触发,但我没有侦听器:/