3

ページ「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();
?>
4

2 に答える 2

1

同じ問題が発生し、ヘッダーを 1 つ追加すると Firefox の問題が解決するようです。

header('Connection: keep-alive');
于 2013-12-04T11:48:29.213 に答える