我目前正在将服务器发送的事件实现到我的服务器/网页上。我已经实现了一个简单的PHP脚本,它只是回显“1”和简单的JavaScript,它获取消息并将其显示在屏幕上。我无法理解的是,为什么它在网页上重复打印“1”,而不是在PHP脚本中查看?
我已阅读多个论坛和文章,我似乎无法理解为什么这样做。
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。为什么是这样?
浏览器尝试在连接关闭后的一段时间后重新连接。您可以在服务器响应中使用retry: X
来设置延迟(以毫秒为单位)
BTW。 Microsoft浏览器不支持服务器发送的事件(Edge 18到目前为止) - CanIUse EventSource