我遇到了奇怪的问题,不确定这是否是预期的行为。
我正在尝试使用 SSE 和 PHP 脚本实现一个超级简单的概念验证。
PHP文件
sse.make-segment-snapshots.php
:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
for ($i = 0; $i <= 5; $i++) {
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
}
echo "data: END-OF-STREAM" . "\n\n";
flush();
这是我的 JS/jquery 代码:
$('.btn-snap-all').on('click', function () {
const source = new EventSource('sse.make-segment-snapshots.php');
const listener = function (event) {
if(typeof event.data !== 'undefined'){
console.log(event.data);
}
};
source.addEventListener('open', listener, false);
source.addEventListener('message', listener, false);
source.addEventListener('error', listener, false);
return false;
});
但是,页面似乎并没有调用端点一次并以状态 200 运行它,而是无限期地重新连接到它:
这种行为是预期的还是我在这里误读了什么?