【问题标题】:Facing Javascript bubbling in case of server sent event在服务器发送事件的情况下面临 Javascript 冒泡
【发布时间】: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 seconds1st 4 second(即 0 秒到 4 秒)点击页面我得到1 alert2nd 4 seconds(即 4+ 秒到 8 秒)点击页面我收到警报 2 times3rd 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


【解决方案1】:

这与event Bubbling 无关。这是来自您发送的服务器端datas,问题是您每 4 秒后从头开始发送数据。

解决方案是仅发送 特定 4 秒所需的数据,并清空服务器端文件中的 data 变量

如果您还可以发布您从中发送数据的PHP 文件,那将会很有用

【讨论】:

  • 是的,我每 4 秒执行一次,因为我需要一直更新,任何时候服务器数据都可能被修改。我不能只在特定的四秒内发送数据。
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
相关资源
最近更新 更多