43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
let newcode = false;
|
|
//helferfunktion die das richtige format für das event erstellt
|
|
function sendMessage(response, eventname, datacontent) {
|
|
//response.write ist ein append, also schreibt was ans ende der seite
|
|
|
|
response.write('event: ' + eventname + '\n' + 'data: ' + JSON.stringify(datacontent) + '\n\n')
|
|
newcode = false;
|
|
}
|
|
|
|
function send_sse_update() {
|
|
newcode = true;
|
|
}
|
|
|
|
|
|
async function sse(request, response) {
|
|
|
|
//header so setzen
|
|
response.set({
|
|
'Cache-Control': 'no-cache',
|
|
'Content-Type': 'text/event-stream',
|
|
'Connection': 'keep-alive'
|
|
})
|
|
response.flushHeaders();
|
|
//loop, schickt ein event, wartet 5 sekunden, schickt dann erneut.
|
|
// so abändern, dass anderer code in den loop hineingreifen kann (variable bool "newcode" oder so)
|
|
//dann wenn newcode = true, schicke ein eben via sendlive)
|
|
//der loop muss glaube ich bestehen bleiben
|
|
while (true){
|
|
if (newcode) {
|
|
console.log("update send")
|
|
sendMessage(response, 'update', {})
|
|
} else {
|
|
sendMessage(response,'hello', {})
|
|
}
|
|
// response.write()
|
|
await new Promise(resolve => setTimeout(resolve, 5000))
|
|
console.log(newcode)
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = { sse, send_sse_update }
|