4

昨日、私が作成しているオンラインゲームのニュースフィードを作成するための優れた方法であったため、サーバー送信イベントに飛び込みました。フィードをサブスクライブできる作業用スクリプトと、MySqlデータベースからニュースフィードを数分以内にプルできるスクリプトがありましたが、何らかの理由で毎回接続が切断されます...(そして、3秒ごとに再接続し、何もしませんたとえば、特定の時間間隔でAJAXを使用するよりも優れています)

私が使用しているJavaScript:

var source = new EventSource('http://theobg.itselementary.site50.net/gamefeed.php');
source.onmessage = function(e) {
    $("#gamefeed").html(e.data);
}

私が使用しているPHP:

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

function sendMsg($id, $msg) {
  echo "id: $id" . PHP_EOL;
  echo "data: $msg" . PHP_EOL;
  echo PHP_EOL;
  ob_flush();
  flush();
}

//The file for connecting to my database here...
$gameid = 1;

$serverTime = time();
//Some mysql query to get the gamefeed from the database here..., gamefeed is structured like this: NEWS&OTHERNEWS&OLDERNEWS&EVENOLDERNEWS

sendMsg($serverTime, $gamefeed);

?>

私はインターネット全体を見てきましたが、接続が「維持されていない」ことを除いて、すべてがうまく機能しているようです。それがなぜであるかについての手がかりはありません...誰かが私を助けることができますか?

よろしくお願いします、Dalionzo

4

1 に答える 1

2

データを確認し、ループを使用して送信する必要があります。

<?php
while(true){
    //check for updates here
    if($updates){
        sendMsg($id,$data);
    }
    sleep(1);//loosen it up
}

また、コーディングを簡単にするために、サーバー送信イベント用の私の php ライブラリを試すことができます。ここ

于 2013-02-09T10:15:27.533 に答える