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

时间:2017-03-12 15:53:47

标签: php codeigniter server-sent-events

我的帖子请求需要很长时间才能完成。

我已经阅读了所有内容并得出结论,我需要使用SSE来显示进度。 如果我停止http请求,我可以在响应正文中看到我的进度消息,但我似乎无法管理一种只获取消息的方法(除响应主体外)。

似乎我需要一个PHP脚本发送到FE中的EventSource类,但所有脚本都有“不允许直接访问脚本”。

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

还有另一种方法可以从服务器上显示我的“回显”消息吗?

我主要得到

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

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

同样,如果你对我有更好的建议,我很乐意听到。

1 个答案:

答案 0 :(得分:1)

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

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

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')。 你必须在任何输出之前放置这一行。