ページ「checkMessages.php」のEventSourceを起動するJavaScriptがあります。そのページは、データベースに何か新しいものが入力された場合にのみデータを返します。
ここでの問題は Mozilla Firefox にあります。これは、データベースに変更があるたびに SSE コンテンツが更新されないためです。Google Chrome でも同じことを確認しましたが、すべて問題なく動作しています。
さらに、 Firefox でhttp://www.w3schools.com/html/tryit.asp?filename=tryhtml5_sseの HTML5 SSE デモを確認したところ、動作しました。では、このコードの何が問題なのですか?
index.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();
?>