2017-10-18 42 views
1

我有一個Node服務器使用socket.io。我希望我的socket對象每分鐘一次向連接的瀏覽器發送一次數據。理想情況下,像setInterval()這樣的東西,而不是每隔x分鐘撥打電話,查看時間並按分鐘執行。Node/Socket.io - 如何每x分鐘發送一個函數/數據

我想它會看起來像這樣,如果我想每1分鐘發送一次。

var data = "someData"; 
io.on('connection', function (socket) { 
    socket.emit_every_x_minutes(1, 'myData', data)} 
}); 

這會每隔1分鐘週期性發送"someData"到客戶端套接字。

什麼是每x分鐘發射的正確方法socket.io

回答

2

爲什麼不使用setInterval/setTimeout?

var data = "someData"; 
io.on('connection', (socket) => { 
    setInterval(() => { 
     socket.emit(1, 'myData', data)} 
    }, 60 * 1000); 
}); 

如果你想上的那一刻,每一分鐘,沒有一個庫:

var data = "someData"; 
const doEveryMinute = (socket) => { 
    setTimeout(() => { 
     setInterval(() => doEveryMinute(socket), 60000); 
     socket.emit(1, 'myData', data)} 
    }, (60 - date.getSeconds()) * 1000); 
} 

io.on('connection', (socket) => { 
    doEveryMinute(socket); 
}); 

如果精度很重要,那麼你會希望像https://github.com/kelektiv/node-cron

+0

謝謝你的迴應,但我正在尋找的東西,檢查的時間和執行上的那一刻,不是每個x分鐘 –

+0

他是這麼寫的? –

+1

然後你想要類似https://github.com/kelektiv/node-cron。 – marchaos