sS hInitWebSocket(O... _) { optPar S wsVar = "ws"; optPar S onOpen; optPar S onMessage; optPar S readyMsg = "WebSocket ready!"; ret hreconnectingWebSockets() + hscript([[ var wsReady = false; var wsInitialMsgs = []; var ]] + wsVar + [[ = new ReconnectingWebSocket(((window.location.protocol === "https:") ? "wss://" : "ws://") + window.location.host + "/"); ]] + wsVar + [[.onopen = function(event) { wsReady = true; console.log(]] + jsQuote(readyMsg) + [[ for each (var msg in wsInitialMsgs) { ws.send(msg); } ]] + unnull(onOpen) + [[ }; ]] + wsVar + [[.onmessage = function(event) { ]] + unnull(onMessage) + [[ }; // add an initial message to send when websocket opens // also send it now if ws is open already var wsInitialMsg(msg) { wsInitialMsgs.push(msg); if (wsReady) ws.send(msg); } ]]); }