我当前正在将服务器发送的事件实施到我的服务器/网页上。我已经实现了一个简单的PHP脚本,该脚本仅回显“ 1”,而一个简单的JavaScript则获取消息并将其显示在屏幕上。我无法理解的是为什么它在一段时间内不在php脚本中时反复在网页上重复打印“ 1”?
我已经阅读了多个论坛和文章,但似乎无法理解为什么这样做。
php代码为:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$num = 1;
echo "data: {$num} \r\n";
@ob_flush();
flush();
usleep(500000);
?>
Javascript是:
var source = new EventSource("sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
我希望php文件可以运行一次,并且屏幕上会显示数字“ 1”,但是似乎每隔几秒钟就会在屏幕上重复打印1。为什么会这样?
答案 0 :(得分:1)
浏览器在连接关闭一段时间后尝试重新连接。您可以在服务器响应中使用retry: X
来设置延迟(以毫秒为单位)
顺便说一句。 Microsoft浏览器(到目前为止,Edge 18)不支持服务器发送的事件-CanIUse EventSource