我正在构建一个 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
前端代码如下所示:
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)
}
})
因为 EventSource 订阅不是即时的,所以从服务器发回的第一条消息可能是“第 2 部分,共 12 部分已完成”,错过了第 1 部分的更新。有没有办法确保没有错过任何事件,简短还提供一种方法来获取给定工作的所有事件?