我正在更新一个显示实时传感器数据的web应用程序,在它当前的第一次迭代中,它通过连续的AJAX轮询来实现这一点。
然而,为了使它更像一个“真正的实时”应用程序,我希望它是基于事件的。在
我一直在阅读基于事件的技术,并且基于实时通信只需单向(服务器->客户端)的事实,我现在选择使用服务器发送的事件(SSE),而不是websockets之类的东西。
如here on the Mozilla Docs所述,这很容易在服务器端实现,方法如下(稍微简化):<?php
// SSEscript.php
date_default_timezone_set("America/New_York");
header("Content-Type: text/event-stream\n\n");
while (1) {
if ($new_data_available) {
echo "data:". $data;
}
sleep($short_time_to_spare_cpu);
}
?>
在客户端上:
^{pr2}$
以上这些对我来说都很好。
但是,传感器数据最初是通过在服务器上连续运行的Python脚本来检索的,那么如何在检索到传感器数据时立即将其从Python脚本传输到PHP脚本,以便生成并发送事件?在
我能像下面描述的那样做吗?:
同时,所有新数据都存储在MySQL数据库中,所以我当然可以让PHP脚本经常在数据库中查询新条目,但是必须有一种更聪明的方法。那么我能让图像中的2.1和2.2同时发生吗?在
我在这里找到的所有答案都描述了如何通过让PHP执行Python脚本来传输数据,但这并不是我想要的,因为无论用户是否请求数据,都必须运行它。在
是一种插座的方式,如果是的话,你能告诉我怎么做吗?
我希望你能帮助我!在