HTML5 Server-Sent Events onerror每3秒显示一次

时间:2015-08-25 11:28:40

标签: php html5 server-sent-events

我是SSE的新人,我跟随w3schools tutorial。我在他们的示例中添加了一些代码,以便我可以看到连接何时打开以及何时出现错误。这是我的代码:

<script>
var source = new EventSource("sse.php");                        
source.addEventListener('message', function(e) {
    console.log("onmessage");           
    document.getElementById("result").innerHTML += event.data + "<br>";     
}, false);

source.addEventListener('open', function(e) {
    console.log("onopen");
}, false);

source.addEventListener('error', function(e) {
    console.log('error '+e.readyState);
}, false);

</script>

我的服务器端代码:

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>

文档说明

  

服务器发送的事件是指网页自动从服务器获取更新。之前也可以这样做,但是网页必须询问是否有可用的更新。使用服务器发送的事件,更新会自动进行。

但是控制台向我们展示了相反的结果:

enter image description here

客户端正在请求新连接,收到消息,发生错误并且连接已关闭。每3秒重复一次。为什么会这样?

1 个答案:

答案 0 :(得分:1)

我怀疑你的服务器端实现没有打开HTTP连接。所以它一遍又一遍地重新连接。

我不会写PHP但是every example除了ob_flush()之外,我还发现了flush()

ob_flush();
flush();

你试过吗?