2025-07-09 23:28:48 +02:00

62 lines
1.9 KiB
Go

package main
var Index = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/8.0.7/signalr.min.js" integrity="sha512-7SRCYIJtR6F8ocwW7UxW6wGKqbSyqREDbfCORCbGLatU0iugBLwyOXpzhkPyHIFdBO0K2VCu57fvP2Twgx1o2A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div>
<div>
<input type="text" id="name" />
<button id="greet">Greet</button>
<button id="ping">Ping</button>
</div>
<ul id="events"></ul>
</div>
<script>
(async function () {
let ws;
function connect() {
if (!localStorage.getItem('client_id')) {
localStorage.setItem('client_id', crypto.randomUUID());
}
ws = new WebSocket('/events?id=' + localStorage.getItem('client_id'));
ws.addEventListener('open', function () {
wsOpen = true;
});
ws.addEventListener('message', function (message) {
const event = JSON.parse(message.data);
if (!event.type) {
return;
}
const eventList = document.getElementById('events');
const li = document.createElement('li');
li.innerText = event.type + ': ' + (event.data ? JSON.stringify(event.data) : 'null');
eventList.append(li);
});
ws.onclose = function () {
setTimeout(() => connect(), 5000);
};
}
document.getElementById('greet').onclick = function () {
const name = document.getElementById('name').value;
ws.send(JSON.stringify({
type: 'greet me',
data: name,
}));
};
document.getElementById('ping').onclick = function () {
ws.send(JSON.stringify({type: 'ping'}));
};
connect();
})();
</script>
</body>
</html>`