无法使用 SSE 和 PHP 发送自定义事件

Unable to send custom events with SSE and PHP

我有使用默认消息类型的服务器发送事件 (SSE)。但是我无法让自定义事件类型起作用。

在我的客户端上

const sse = new 
EventSource('/api/events/transaction-event');
sse.onopen = (d=>console.log(d))

sse.addEventListener("message", function(e) {
  console.log('message')
  console.log(e)
})

sse.addEventListener("test", function(e) {
  console.log('test')
  console.log(e)
})

在我的服务器上

class Events
{
    public function test(Request $request){
      $response = new StreamedResponse(function() use ($request) {
        while(true) {

          // echo('event: test\n');
          echo 'data: ' . json_encode(['hello'=>'world']) . "\n\n";
          ob_flush();
          flush();
          sleep(2);
        }
      });
      $response->headers->set('Content-Type', 'text/event-stream');
      $response->headers->set('Connection', 'keep');
      $response->headers->set('Cache-Control', 'no-cache');
      return $response;
    }

}

运行这段代码,你可以看到event: test\n被注释掉了,我在浏览器中得到了类型为message的SSE。但是,如果我取消注释 event: test\n 以尝试将事件类型更改为 test,则客户端侦听器不会调用(默认的 message 类型也不会)。我在这里错过了什么吗?感谢您的帮助。

尝试更改引号:

// echo('event: test\n');

收件人:

echo("event: test\n");

允许处理新行