Newer
Older
xsplit_control / server / public / index.html
<html>
    <head>
        <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
        <script>
            const WSState = { CONNECTING:0, OPEN:1, CLOSING:1, CLOSED: 1 };
            let scenes = [];
            let ws;
            function clickedScene(index)
            {
                const name = scenes[index];

                if (ws && ws.readyState == WSState.Open)
                {
                    ws.send(JSON.stringify({set_scene:{index, name}}));
                }
            }

            async function go()
            {
                await $.when($.ready);



                function doWebsocket()
                {
                    ws = new WebSocket(`ws://${document.location.host}:8080`);
                    ws.onclose = () =>
                    {
                        document.getElementById('scenelist').innerHTML = "";
                        setTimeout(doWebsocket, 3000);
                    };
                    ws.onmessage = ev =>
                    {
                        try
                        {
                            const data = JSON.parse(ev.data);
                            if (Array.isArray(data.scenes))
                            {
                                scenes = data.scenes;
                                document.getElementById('scenelist').innerHTML = 
                                    data.scenes.map((scene, i) =>
                                        `<input type=button onclick='clickedScene(${i})' value="${scene}">`
                                    ).join('<br>');
                            }
                        }
                        catch {}
                    };
                }
                doWebsocket();
            }

            go();
        </script>
    </head>
    <body>
        <div id=scenelist></div>
    </body>
</html>