如何将 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')
。
您必须将此行放在任何输出之前。
我有一个 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')
。
您必须将此行放在任何输出之前。