Javascript EventSource 不断重新连接到 SSE 端点(在 php 中)

问题描述 投票:0回答:0

我遇到了奇怪的问题,不确定这是否是预期的行为。

我正在尝试使用 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 运行它,而是无限期地重新连接到它:

这种行为是预期的还是我在这里误读了什么?

javascript php server-sent-events
© www.soinside.com 2019 - 2024. All rights reserved.