【发布时间】:2013-01-01 15:10:00
【问题描述】:
我在网上看过教程,作者设置SSE/EventSource,在服务器PHP脚本回显一些数据,然后调用ob_flush()和flush()将数据发送回客户端浏览器。这工作正常,每 3 秒将新数据推送到客户端。
但我也读到有人说这是使用 SSE 的错误方式。这个人说,SSE的全部意义在于服务器应该保持连接,而使用上述方法将新数据推送到客户端的原因是因为EventSource实现了服务器断开连接。这个人说服务器应该使用循环并通过使用睡眠每隔几秒钟将数据推送出去。
那么,是这样的吗? 是否应该通过在服务器上设置循环来实现 SSE 并推送数据,使用 sleep() 来调整推送速度?
【问题讨论】:
-
另外,看看这个问题:stackoverflow.com/questions/9565290/…
-
"在服务器端,脚本 (...) 以以下形式发送消息,具有 text/event-stream MIME 类型。"这跟我的问题有什么关系?而且您发布的其他链接也与我的问题无关,即推荐的实现 SSE 的方法是什么,即我们是否应该始终在服务器上使用无限循环?
-
另一个问题是“如何触发 SSE 事件?”,而您问的是 “如何实现 SSE?”。这可能不是同一个确切的问题,但我认为其他问题不是无关紧要的。
-
stackoverflow 的一大优点是互相帮助,这样我们就不必去挖掘冗长的术语填充标准文档,这些文档可能会或可能会提供答案。 FWIW 我去查看了您链接中的标准,但没有找到答案。
-
据我了解,服务器不应该关闭连接,所以你上面链接的教程做错了。我不是 PHP 程序员,但带有循环和
sleep();接缝的解决方案是合理的(MDN article 就是这样做的)。
标签: javascript html server-sent-events