sse stuff

This commit is contained in:
Sem van der Hoeven
2023-05-30 22:20:42 +02:00
parent e6e1b11369
commit 6c0aa9e15f
2 changed files with 28 additions and 22 deletions

View File

@@ -18,28 +18,32 @@ var ws;
var api_connected = false; var api_connected = false;
function send_events_to_clients(data) { function send_events_to_clients(data) {
sse_clients.forEach(client => client.response.write(`data: ${JSON.stringify(data)}\n\n`)); sse_clients.forEach((client) =>
client.response.write(`data: ${JSON.stringify(data)}\n\n`)
);
} }
function handle_sse_client(request, response, next) { function handle_sse_client(request, response, next) {
console.log("handling sse client");
const headers = { const headers = {
"Content-Type": "text/event-stream", "Content-Type": "text/event-stream",
'Connection': "keep-alive", Connection: "keep-alive",
"Cache-Control": "no-cache", "Cache-Control": "no-cache",
}; };
// response.writeHead(200, headers);
// response.write("yeet\n\n"); response.writeHead(200, headers);
response.write(JSON.stringify("yeet") + "\n\n");
const clientID = Date.now(); const clientID = Date.now();
const newClient = { const newClient = {
id: clientID, id: clientID,
response response,
}; };
sse_clients.push(newClient); sse_clients.push(newClient);
request.on("close", () => { request.on("close", () => {
console.log(`${clientID} Connection closed`); console.log(`${clientID} Connection closed`);
sse_clients = sse_clients.filter(client => client.id !== clientID); sse_clients = sse_clients.filter((client) => client.id !== clientID);
}); });
} }

View File

@@ -60,12 +60,14 @@
<script> <script>
var update_status = setInterval(update_status, 1000); var update_status = setInterval(update_status, 1000);
assign_button_callbacks(); assign_button_callbacks();
window.onload = function () {
const events = new EventSource("/events"); const events = new EventSource("/events");
events.onmessage = (event) => { events.onmessage = (event) => {
const parsedData = JSON.parse(event.data); const parsedData = JSON.parse(event.data);
console.log("RECEIVED EVENT"); console.log("RECEIVED EVENT");
console.log(parsedData); console.log(parsedData);
} }
};
function assign_button_callbacks() { function assign_button_callbacks() {
var buttons = document.getElementsByClassName("movebutton"); var buttons = document.getElementsByClassName("movebutton");