58 lines
1.6 KiB
HTML
58 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport"
|
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
|
|
<title><!--$TITLE$--></title>
|
|
<style>
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
width: 100vw;
|
|
height: 100vh;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
font-family: sans-serif;
|
|
}
|
|
|
|
/*$STYLE$*/
|
|
</style>
|
|
<!--$ICON$-->
|
|
</head>
|
|
|
|
<body>
|
|
<!--$SCRIPT$-->
|
|
<script>
|
|
function connect() {
|
|
const params = new URLSearchParams(location.search);
|
|
const game = params.get('game') || '';
|
|
const ws = new WebSocket('css-ws?game=' + encodeURIComponent(game));
|
|
const onMessage = (e) => {
|
|
try {
|
|
const { type, css } = JSON.parse(e.data);
|
|
if (type === 'css') {
|
|
const styleTag = document.querySelector('style');
|
|
if (styleTag) styleTag.textContent = css;
|
|
}
|
|
} catch { }
|
|
};
|
|
const onClose = () => {
|
|
ws.removeEventListener('message', onMessage);
|
|
ws.removeEventListener('close', onClose);
|
|
setTimeout(connect, 500);
|
|
};
|
|
ws.addEventListener('message', onMessage);
|
|
ws.addEventListener('close', onClose);
|
|
}
|
|
|
|
connect();
|
|
</script>
|
|
</body>
|
|
|
|
</html> |