2014-06-23 47 views
0

你好我開始使用socket.io與sails.js,我想知道是否有一種方法或最佳做法來獲得socket.emit(在我的控制器)每次發送的數據,不只是一次..我嘗試使用socket.get,但是當我在控制檯中輸出值時,它們只出現一次。Sails.js Socket.IO獲取數據的時間窗口(setInterval)

我將在未來使用它將數據推送到客戶端,以跟蹤從不同項目中的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); 

}); 

我在,我正確的時間間隔獲取數據的網絡選項卡(鉻控制檯)看到。

回答

1

您正在觸發my_event操作來啓動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調用成功。

+0

謝謝我忘了試一下,所以這個事件被解僱了,但我沒有收聽它:/ –