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)); // The while loop doesnt wait for the promise so sometimes it doesnt send the update 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 }