我正在使用HTML5 Server-Sent Events。
实际上我需要在数据库(php / mysql)中插入任何新记录时显示通知(新记录输入和未读取)。
因此,出于测试目的,我只尝试了总行数。但是我在本地主机中收到此错误消息:
Firefox无法在http:// localhost /project/folder/servevent/demo_sse.php与服务器建立连接。
该行是:
var source = new EventSource("demo_sse.php");
我试过这个:
index.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>
demo_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();
?>
请让我知道出了什么问题。
我知道通知我们可以在一段时间间隔内使用Ajax,但我不想要这样的事情。因为我有N个记录,这可能会减慢我的资源。
答案 0 :(得分:4)
答案 1 :(得分:2)
将标题设置为{
"Id":1,
"ApimId":"1",
"FirstName":"Super",
"LastName":"Admin","
"Email":"ahmed@gmail.com"
}
对我有用:
text/event-stream
答案 2 :(得分:0)
请根据您的要求修改以下代码段
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
// infinite loop
while (1) {
// output the current timestamp; REPLACE WITH YOUR FUNCTIONALITY
$time = date('r');
echo "data: Server time: {$time}\n\n"; // 2 new line characters
ob_end_flush();
flush();
sleep(2); // wait for 2 seconds
}
?>
我自己测试了这段代码片段;它为我工作。如果您有任何疑问,请与我们联系。