0
私はユーザーが処理のためにジョブをキューに入れることができるWebアプリケーションを構築しています。バックエンドログが含まれている場合がありますパブ/サブイベントを購読するときに以前のイベントを取得する
10:57: Job 101: Part 8 of 10 completed
10:58: Job 101: Part 9 of 10 completed
10:59: Job 100: Part 4 of 7 completed
11:00: New Job Queued. ID will be 102
11:01: Job 100: Part 5 of 7 completed
11:02: Job 101: All 10 parts completed
11:03: Job 102: started
11:04: Job 100: Part 6 of 7 completed
11:05: Job 102: Part 1 of 12 completed
フロントエンドのコードは次のようになりますのEventSourceはインスタントではない購読ので
axios.post('/job').then((res)=>{
var job_id = res.body // job_id will be 102
var source = new EventSource("/status?job_id="+job_id);
source.onmessage = (event)=>{
updatePageWith(event.data)
}
})
、それは最初のメッセージは、サーバーからバックされます送信されている可能性があります「パート2の12の完了」、パート1の更新がありません。特定のジョブのすべてのイベントを取得する方法を提供しないと、イベントが見逃されないようにする方法はありますか?
_ "サーバーから返信される最初のメッセージは、パート2の12分の2が完了し、パート1の更新が失われている可能性があります。イベントが見つからないようにする方法はありますか?サーバー側の問題ではなく、 'EventSource'の問題ではありますか? – guest271314
はい。私は失われた更新を防ぐ手段を探しています。私は下に掲載されたソリューションの問題を "解決"しましたが、私はこの問題を抱える唯一の人ではないと確信しています。 – Dave
'message'イベントが' php'から最初のイベントストリームを受信しない方法が不明ですか?あなたは '$ _SERVER [" HTTP_LAST_EVENT_ID "]'を 'php'で使っていますか? – guest271314