2024-06-06 20:49:21 +02:00

51 lines
1.4 KiB
JavaScript

var newcode;
//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;
}
function delay(message) {
return new Promise((resolve) => setTimeout(function () {
console.log(message);
resolve();
}, 5000))
}
const timeout = (ms) => new Promise(resolve => setTimeout(resolve, ms));
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) {
message = "update"
console.log("update send")
} else {
message = "hello"
}
sendMessage(response,message, {})
await timeout(3000);
}
}
module.exports = { sse, send_sse_update }