これが私のローカルマシンで完全に機能することから始めましょう。以下の js の例は、stream.php に接続し、サーバーの現在時刻の継続的な更新を毎秒受信します。
index.php
var source = new EventSource("stream.php");
source.addEventListener('message', function(e) {
console.log(e);
}, false);
source.addEventListener('open', function(e) {
console.log(e);
}, false);
source.addEventListener('error', function(e) {
if (e.readyState == EventSource.CLOSED) {
console.log('closed');
}
}, false);
ストリーム.php
while(true)
{
// Headers must be processed line by line.
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
// Set data line
print "data: " . date( 'G:H:s', time() ) . PHP_EOL . PHP_EOL;
// Toilet
flush();
// Wait one second.
sleep(1);
}
ライブ開発にアップロードした後、少し遅れることが予想されました。サーバ。ただし、約 15 ~ 20 分の遅延があります。最初のエントリを見る前に。
接続はドロップしません。(おそらく 40 分以上かかりました。現在。) これは単なる Apache ループの問題ですか (つまり、Web ソケットを調べる時間です)、それともこれを修正するために私にできることはありますか?