Files
wasm-http-server/docs/hello-sse/index.html

57 lines
1.8 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html>
<head>
2024-10-16 13:24:03 +02:00
<title>go-wasm-http-server hello sse demo</title>
<script>
navigator.serviceWorker.register('sw.js').then((registration) => {
const serviceWorker = registration.installing ?? registration.waiting ?? registration.active;
if (serviceWorker.state === 'activated') {
document.querySelector('#open-button').disabled = false;
} else {
serviceWorker.addEventListener('statechange', (e) => {
if (e.target.state === 'activated') {
document.querySelector('#open-button').disabled = false;
}
});
}
});
2024-10-16 13:24:03 +02:00
window.addEventListener('DOMContentLoaded', () => {
let es;
document.querySelector('#open-button').addEventListener('click', () => {
if (es && es.readyState === es.OPEN) return;
es = new EventSource('api/events');
2024-10-16 13:24:03 +02:00
es.addEventListener('ping', (e) => {
const li = document.createElement('li');
li.textContent = `ping: data=${e.data}`;
document.querySelector('ul').append(li);
});
});
2024-10-16 13:24:03 +02:00
document.querySelector('#close-button').addEventListener('click', () => {
if (!es) return;
es.close();
});
2024-10-16 13:24:03 +02:00
document.querySelector('#clear-button').addEventListener('click', () => {
document.querySelector('ul').innerHTML = '';
});
2024-10-16 13:24:03 +02:00
window.addEventListener('unload', () => {
if (!es) return;
es.close();
});
});
</script>
</head>
2024-10-16 13:24:03 +02:00
<body>
<p>
<button id="open-button" disabled>Open event source</button>
<button id="close-button">Close event source</button>
<button id="clear-button">Clear events</button>
</p>
<ul></ul>
</body>
</html>