如何将 http 请求与 SSE (Server SentEvents) 相结合

How to combine http requests with SSE (Server SentEvents)

我有一个 post 请求需要很长时间才能完成。

我通读了一遍,得出的结论是我需要使用 SSE 来显示进度。 如果我停止 http 请求,我可以在响应的 body 中看到我的进度消息,但我似乎无法设法只获取消息(除了响应 body) .

好像我需要一个PHP脚本发送到FE中的EventSourceclass,但是所有的脚本都有'No direct script access allowed'.

信息是从库发送的,而不是从控制器本身发送的,调用是由控制器调用的,使用 index_post。

还有其他方法可以让我的 "echoed" 消息从服务器显示出来吗?

我大部分都明白

 "EventSource's response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection."

作为一个错误。 如果我把事件流的 headers 放在它没有帮助,因为它无论如何连接到索引页面,我仍然需要它作为 html.

再次强调,如果您对我有更好的建议,我很乐意听取。

首先 - 您不想直接访问您的脚本。使用控制器绝对可以。

您可以在不使用视图的情况下发送您的输出以查看或回显您的输出,如下所示:

echo "data: Hello World!\n\n";
exit;

您的主要问题是,您没有发送正确的 MIME 类型。使用 output library。查看带有 $this->output->set_content_type('application/json') 的示例并将其更改为 $this->output->set_content_type('text/event-stream')。 您必须将此行放在任何输出之前。