left4me/l4d2web/static/js/sse.js

29 lines
660 B
JavaScript

function streamTextToElement(element) {
const url = element.dataset.sseUrl;
if (!url) {
return;
}
const source = new EventSource(url);
const appendLine = (line) => {
element.textContent += `${line}\n`;
element.scrollTop = element.scrollHeight;
};
source.onmessage = (event) => {
appendLine(event.data);
};
source.addEventListener("stdout", (event) => {
appendLine(event.data);
});
source.addEventListener("stderr", (event) => {
appendLine(`[stderr] ${event.data}`);
});
}
document.addEventListener("DOMContentLoaded", () => {
document.querySelectorAll("[data-sse-url]").forEach(streamTextToElement);
});