我有一个为页面“checkMessages.php”触发事件源的javascript。只有在数据库中输入了新内容时,该页面才会返回数据。
这里的问题在于 Mozilla Firefox,因为它不会在数据库发生任何变化时更新 SSE 内容。我用谷歌浏览器检查了同样的情况,一切正常。
此外,我在 Firefox 中检查了来自http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_sse的 HTML5 SSE 演示,它可以工作。那么这段代码有什么问题呢?
索引.php:
<script type="text/javascript">
if(typeof(EventSource)!="undefined")
{
var source=new EventSource("checkMessages.php");
source.onmessage=function(event)
{
$("#new_message").html("Inbox"+event.data);
}
}
else
{
$("#new_message").html("HTML5 not supported");
}
</script>
<div id="new_message_container">
<span id="new_message" onclick="readInbox($userid)">
Inbox
</span>
</div>
checkMessages.php:
<?php
session_start();
require_once 'myfunctions.php';
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$userid=studentidOf($_SESSION['user']);
$query="Select msgby from messages where msgfor='$userid'";
$result=queryMysql($query);
$k=mysql_num_rows($result);
if($k>0)
echo "data:($k)";
flush();
?>