【发布时间】:2015-07-09 04:47:47
【问题描述】:
想想 HTML5 服务器发送事件(我在服务器端使用 php)。要获取服务器发送的数据,我有以下代码:
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("chat.php");
source.onmessage = function(event) {
$(document).click(function(){
alert(event.data);
});
};
}
chat.php 在哪里发送一些数据every 4 seconds。 1st 4 second(即 0 秒到 4 秒)点击页面我得到1 alert。 2nd 4 seconds(即 4+ 秒到 8 秒)点击页面我收到警报 2 times。 3rd 4 seconds(i.e. 8+ sec to 12 sec) 我收到警报3 times.......等等。
请注意,这有点像 javascript 冒泡。有什么办法摆脱这个吗?
Edit:(我正在添加更多)
服务器端代码:
<?php
echo "data: $customers\n\n";
/* value of $customers is produced by some query */
flush();
sleep(1);
?>
【问题讨论】:
-
为什么不使用客户端 ajax 请求来请求更新?
-
@Michael Dibbets 这是一个很好的建议,然后我必须在 setInterval() 中进行。因为我必须一直更新。这会是个好主意吗? setInterval() 内的ajax调用?你怎么看?
-
我不会使用 setInterval ,因为您有点失去了在需要时延长或缩短延迟的灵活性。每次我都会设置一个新的超时,以确保引用的安全,因此如果需要,我可以取消最后一次超时。基本上它是超时内的自调用函数。如果您真的想以最小的开销与您的服务器同步生活,我会使用 websocket google.nl/… 然后您可以在更改发生时立即推送
-
是的,你的想法值得考虑。
标签: javascript php jquery server-sent-events event-bubbling