外部交换机的服务器端事件

时间:2014-12-03 13:14:05

标签: php angularjs arduino server-sent-events

我正在尝试编写php代码,只要另一个页面告诉它,它就会在数据库中广播特定字段的值。

给出一些上下文,我有一个自定义计时器总是在页面上打开,我希望用户能够通过外部硬件开关打开它,更新数据库中的字段,并通知服务器广播此更改,启动计时器。如果可能的话,我想放弃一般的中间人并让开关告诉服务器广播开关定时器的开关值。

我建议可能吗?我已经开始使用服务器发送事件,但没有得到正确的挂起......

 <?php
 header('Content-Type: text/event-stream');

 require "conf/config.php";

  mysqli_report(MYSQLI_REPORT_STRICT);
         try {  
             $con=mysqli_connect(DBSERVER,DBUSER,DBPASS,DBNAME);
         } catch (Exception $exp) {
             echo "<label style='font-weight:bold; color:red'>MySQL Server Connection Failed.       </label>";
             exit;
         }

 $query = 'SELECT SwitchPressed FROM live_timers WHERE Timer = 1';

 $result = mysqli($con,$query);
 $data = mysqli_fetch_assoc($result);

 echo "data: {$data}\n\n";
 flush();

我在控制器中有这个,

 var Events = new EventSource('latch.php');

     Events.onmessage = function(event) {
         console.log(event.data);
     };

只是测试一下是否有效,不幸的是这样我得不到任何消息......提前感谢任何帮助

1 个答案:

答案 0 :(得分:0)

MDN文档中,他们使用永不结束的while循环(因为它是一个流)