2
使用socket.broadcast()將從數據庫結果中提供JSON字符串的簡單函數廣播到客戶端。我想要做的事情是在價值變化時更新客戶端。目前,廣播功能正在使用setTimeout每1秒連續廣播。查看Firebug中的請求日誌,有一個連續的GET響應,我不認爲這是一件好事...用socket.io廣播?
想知道使用套接字的最佳做法是什麼?這些請求是否會殺死某些東西?解決方案是比較時間戳還是類似的東西來停止不必要的發送請求?
//server-side
function checkData() {
client.query('SELECT * FROM data', function selectCb(err, data) {
socket.broadcast(processData(data));
setTimeout(checkData, 1000);
});
}
//client-side
socket.on('message', function(data) {
$('#container').html(JSON.stringify(JSON.parse(data), null));
});
//sample data
[{
"type":"Statistic1",
"value":65.2,
"timestamp":"2011-04-29T16:22:39.000Z"
},{
"type":"Statistic2",
"value":18.6,
"timestamp":"2011-04-29T16:22:39.000Z"
}]
感謝您的幫助!
我已經使用正在發送的數據樣本更新了我的上述帖子。如何保存獲取請求,以便知道何時發送被認爲是新的數據? – crawf 2011-05-03 04:05:02
在服務器上記錄您發送的最後一個項目的時間戳。而不是每秒做一次select *,你可以掛鉤更新數據庫的任何東西或者你可以用memcsche做類似的策略 – mcotton 2011-05-03 04:12:40