服务器发送事件:不工作

use*_*031 4 javascript php mysql notifications server-sent-events

我正在使用HTML5 Server-Sent Events

实际上,我需要在任何新记录插入数据库(php/mysql)时显示通知(新记录输入和未读记录)。

所以为了测试目的,我只是尝试了总行数。但是我在本地主机中收到此错误消息:

火狐不能建立在HTTP的服务器的连接://本地主机/project/folder/servevent/demo_sse.php。

该行是:

var source = new EventSource("demo_sse.php");
Run Code Online (Sandbox Code Playgroud)

我试过这个:

索引.php

<script>
if(typeof(EventSource) !== "undefined") {
    var source = new EventSource("demo_sse.php");
    source.onmessage = function(event) {
        document.getElementById("result").innerHTML = event.data;
    };
} else {
    document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script> 
<div id="result"></div> 
Run Code Online (Sandbox Code Playgroud)

演示_sse.php

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

$db = mysql_connect("localhost", "root", ""); // your host, user, password
  if(!$db) { echo mysql_error(); }
$select_db = mysql_select_db("testdatase"); // database name
  if(!$select_db) { echo mysql_error(); }

$time = " SELECT count( id ) AS ct FROM `product` ";
$result = mysql_query($time);
$resa = mysql_fetch_assoc($result);
echo $resa['ct'];
flush();
?> 
Run Code Online (Sandbox Code Playgroud)

请让我知道出了什么问题。

我知道通知我们可以使用 Ajax 有一些间隔时间,但我不想要这样的东西。因为我有 N 条记录,这可能会减慢我的资源速度。

asu*_*sky 5

根据这个

有几个“规则”需要满足,而您目前缺乏:

  • 输出要发送的数据(总是以“data:”开头)

它有点像:

echo "data: {$resa['ct']}\n\n"; 
Run Code Online (Sandbox Code Playgroud)