"use strict"; /** * webrtc page script * * Author: Peter Harpending * Date: 2026-02-04 * Copyright: Copyright (c) 2026 QPQ AG * * Reference: https://git.qpq.swiss/QPQ-AG/research-megadoc/src/commit/c7c4592d4b21ad120145ef63334471a1a7ec1e60/paste/2026-02/grok-webrtc.html * * @module */ let st = { whoami: "", roster: [] }; main(); async function main() { // start websocket immediately let ws; let init = document.getElementById('init'); let init_join = document.getElementById('init-join'); // handle button click init_join.addEventListener('click', function () { init.hidden = true; document.getElementById('run').hidden = false; ws = new WebSocket('/ws/webrtc'); ws.onopen = function (e) { console.log('ws open'); }; ws.onclose = function (e) { console.warn('ws closed'); }; ws.onerror = function (e) { console.error('ws error:', e); }; ws.onmessage = function (e) { // console.log('ws message:', e.data); let message = JSON.parse(e.data); handle_ws_msg(message); }; }); } function handle_ws_msg(message) { console.log('message from server:', message); switch (message[0]) { case "whoami": st.whoami = message[1]; break; case "roster": st.roster = message[1]; break; default: console.warn("unknown message", message); } render_state(); } function ws_send_json(ws, x) { let s = JSON.stringify(x, undefined, 4); console.log('sending:\n', s); ws.send(s); } function render_state() { console.log('st', st); // whoami document.getElementById('whoami').innerText = st.whoami; // let roster_ul = document.getElementById('roster-ul'); let newChildren = []; for (let nick of st.roster) { if (!(nick === st.whoami)) { let li = nickkk(nick); newChildren.push(li); } } roster_ul.replaceChildren(...newChildren); } function nickkk(nick) { let li = document.createElement('li'); li.innerText += nick; li.innerText += ' '; let call_a = document.createElement('button'); call_a.innerText = 'call'; li.appendChild(call_a); return li; } //# sourceMappingURL=webrtc.js.map