mirror of
https://github.com/autistic-symposium/backend-and-orchestration-toolkit.git
synced 2025-06-08 23:13:08 -04:00
merge files from the blockchain infra repo (#59)
This commit is contained in:
parent
23f56ef195
commit
2a6449bb85
346 changed files with 29097 additions and 132 deletions
36
code/protocol_demos/long-polling/index.js
Normal file
36
code/protocol_demos/long-polling/index.js
Normal file
|
@ -0,0 +1,36 @@
|
|||
const app = require("express")();
|
||||
const jobs = {}
|
||||
|
||||
app.post("/submit", (req, res) => {
|
||||
const jobId = `job:${Date.now()}`
|
||||
jobs[jobId] = 0;
|
||||
updateJob(jobId,0);
|
||||
res.end("\n\n" + jobId + "\n\n");
|
||||
})
|
||||
|
||||
app.get("/checkstatus", async (req, res) => {
|
||||
console.log(jobs[req.query.jobId])
|
||||
//long polling, don't respond until done
|
||||
while(await checkJobComplete(req.query.jobId) == false);
|
||||
res.end("\n\nJobStatus: Complete " + jobs[req.query.jobId] + "%\n\n")
|
||||
|
||||
} )
|
||||
|
||||
app.listen(8080, () => console.log("listening on 8080"));
|
||||
|
||||
async function checkJobComplete(jobId) {
|
||||
return new Promise( (resolve, reject) => {
|
||||
if (jobs[jobId] < 100)
|
||||
this.setTimeout(()=> resolve(false), 1000);
|
||||
else
|
||||
resolve(true);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function updateJob(jobId, prg) {
|
||||
jobs[jobId] = prg;
|
||||
console.log(`updated ${jobId} to ${prg}`)
|
||||
if (prg == 100) return;
|
||||
this.setTimeout(()=> updateJob(jobId, prg + 10), 10000)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue