【发布时间】:2011-08-17 09:18:00
【问题描述】:
使用 socket.broadcast() 将一个简单的函数从数据库结果中提供 JSON 字符串广播到客户端。我希望在值更改时更新客户端。目前,广播功能是使用 setTimeout 每 1 秒连续广播一次。在Firebug中查看请求日志,有连续的GET响应,我觉得不是什么好事……
只是想知道使用套接字的最佳做法是什么?这些请求会杀死一些东西吗?解决方案是否会比较时间戳或类似的方法来停止不必要地发送请求?
//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"
}]
感谢您的帮助!
【问题讨论】: