HTML5服务器通过cURL发送事件


HTML5 Server-Sent Events via cURL

我试图使一个基于html5的通知系统,基于什么时候发生在我的数据库中的表。我专门为这个通知特性做了一个表。下面是它的工作原理:

  1. 服务器发送事件页面(sse.html)的通知内容将参考source.php
  2. action.php包含通过向表中插入数据来触发内容更改通知的动作。
  3. source.php将定期检查表中的任何新数据。如果有,它应该传递一个通知。

我的问题是,如果不检查表,是否可以这样做?

我正在考虑使用cURL直接将内容发送到source.php,当action.php中的动作被执行。这能做到吗?

我见过cURL与HTTP头Content-Type设置为text/event-stream使用,但我不确定如何使用它。

sse.html

<!DOCTYPE html>  
<html>  
<body>  
  <script>  
    var source = new EventSource('source.php');  
    source.onmessage = function(event){  
      var text = event.data;  
      window.webkitNotifications.createNotification('', 'Alert', text).show();  
    }  
  </script>  
</body>  
</html>

source.php

header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
mysql_connect("localhost", "user", "pass");
mysql_select_db("eventstream");
$q = mysql_query("select textnotif from notification where read='0'");
$r = mysql_fetch_array($q);
$notif = $r[textnotif];
if($notif != ""){  
    echo "data: ".$notif.PHP_EOL;  
}

回答你的问题:

…可不可以不查表就这么做?

您的PHP脚本检查SQL表,看看是否有任何数据已更改。PHP检查数据库更改的唯一方法是查询数据库。