【发布时间】:2015-06-04 13:51:55
【问题描述】:
您好,我有一个通过服务器发送事件监听 PHP 代码的 javascript 代码,它运行良好,响应是通过循环从服务器发送的,当循环结束时,服务器发送事件会停止几秒钟脚本再次收听后。当服务器端的循环也结束时,如何结束服务器发送的事件?谢谢。
JS:
var sse=new EventSource("data.php");
sse.onmessage=function(event){
document.getElementById("map").innerHTML+=event.data;
};
PHP:
<?php
header('Content-Type: text/event-stream'); //indicates that server is aware of server sent events
header('Cache-Control: no-cache');//disable caching of response
$coordinates = [
[
"20:11",
33.5731235,
-7.6433045
],
[
"20:11",
33.5731054,
-7.6432876
],
[
"20:11",
33.5731644,
-7.6433304
]
];
foreach($coordinates as $c){
echo "data: ".json_encode($c)."\n\n";
ob_get_flush();
flush();
sleep(1);
}
【问题讨论】:
-
链接中没有我正在寻找的解决方案!
-
关键行:"如果它愿意,它可能会在客户端尝试连接时终止连接并以
204 No Content响应。这将导致客户端停止尝试重新连接。”请下次尝试阅读。 -
我尝试添加 Connection: keep-alive 但同样的问题在循环结束后仍然重新连接,并且链接指向节点 JS 代码而不是 PHP
-
Keep-Alive与HTTP状态码无关,什么意思?
标签: javascript php