私は、JS Server-Sent_EventsをPHPで使用するシステムを設定しています。 それはうまく動作します。しかし、すべてのエラーイベントの回りに1回起動され、私は理由を理解できません。js serverを使用して不特定のsseエラーが表示されるのはなぜですか?
マイJS:
var source = new EventSource("serverSideEvents.php");
source.onmessage = function(event) {
var data = $.parseJSON(event.data);
$(data).each(function(){
doSomethingWith(this); //works as expected
});
};
source.onerror = function(event) {
console.log(event); //fires every few seconds don't know why
};
マイPHP:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
sendUpdates();
function sendUpdates() {
$controller = new someController();
$out = $controller->Run();
foreach($out as $msg)
sendSSEMessage($msg['id'], 'data:'.json_encode($msg));
}
function sendSSEMessage($id, $data){
echo "id: $id \n$data \n\n";
ob_flush();
flush();
}
これは、[OK]を作品は、CLIまたはブラウザ上でPHPがエラーをスローしていない、まだJS SSEのエラーイベントが毎回発射phpが実行されます。これはコンソールでのエラーです。
Event {isTrusted: true, type: "error", target: EventSource, currentTarget: EventSource, eventPhase: 2, …}
bubbles:false
cancelBubble:false
cancelable:false
composed:false
currentTarget:
EventSource {url: "http://localhost:7790/serverSideEvents.php", withCredentials: false, readyState: 0, onopen: null, onmessage: ƒ, …}
defaultPrevented:false
eventPhase:0
isTrusted:true
path:[]
returnValue:true
srcElement:EventSource {url: "http://localhost:7790/serverSideEvents.php", withCredentials: false, readyState: 0, onopen: null, onmessage: ƒ, …}
target:EventSource {url: "http://localhost:7790/serverSideEvents.php", withCredentials: false, readyState: 0, onopen: null, onmessage: ƒ, …}
timeStamp:1129162.5250000001
type:"error"
__proto__:Event
明確になる:コードは期待通りに機能します。私は必要なサーバーメッセージを取得します。エラーイベントもトリガされます。
多分CORSの問題ですか? –