<meta charset="UTF-8"> <html> <body> <div id="titleDivId">Websock Test App</div><br> Incoming text messages from the server. <br> <br> <textarea id=r readonly cols=40 rows=10></textarea><br> <br> Outgoing text message to the server. <input type="text" id="msgTextId" cols=40 rows=1> <button id="sendBtnId", onclick="sendmsg('');">Send</button> <button id="sendAllBtnId", onclick="sendmsg('bcast');">Broadcast</button> <br> Send - loopback to this client <br> Broadcast - transmit to all clients <br> <button id="quitBtnId", onclick="sendquit();">Quit</button> </body> <script> function new_ws(urlpath, protocol) { if (typeof MozWebSocket != "undefined") return new MozWebSocket(urlpath, protocol); return new WebSocket(urlpath, protocol); } function get_appropriate_ws_url(extra_url) { var pcol; var u = document.URL; /* * We open the websocket encrypted if this page came on an * https:// url itself, otherwise unencrypted */ if (u.substring(0, 5) === "https") { pcol = "wss://"; u = u.substr(8); } else { pcol = "ws://"; if (u.substring(0, 4) === "http") u = u.substr(7); } u = u.split("/"); /* + "/xxx" bit is for IE10 workaround */ return pcol + u[0] + "/" + extra_url; } url = get_appropriate_ws_url(""); subscriber_ws = new_ws(url, "websocksrv_test_protocol"); try { subscriber_ws.onopen = function() { document.getElementById("quitBtnId").disabled = 0; document.getElementById("sendBtnId").disabled = 0; } subscriber_ws.onmessage = function got_packet(msg) { console.log("rcv1:"+msg.data) document.getElementById("r").value = document.getElementById("r").value + " 1:" + msg.data + "\n"; document.getElementById("r").scrollTop = document.getElementById("r").scrollHeight; } subscriber_ws.onclose = function() { document.getElementById("quitBtnId").disabled = 1; document.getElementById("sendBtnId").disabled = 1; } } catch(exception) { alert('<p>Error' + exception); } url = get_appropriate_ws_url("publisher"); publisher_ws = new_ws(url, "websocksrv_test_protocol"); try { publisher_ws.onopen = function() { document.getElementById("msgTextId").disabled = 0; document.getElementById("titleDivId").style.color = '#00ff00' } publisher_ws.onmessage = function got_packet(msg) { console.log("rcv2:"+msg.data) document.getElementById("r").value = document.getElementById("r").value + " 2: "+msg.data + "\n"; document.getElementById("r").scrollTop = document.getElementById("r").scrollHeight; } publisher_ws.onclose = function() { document.getElementById("msgTextId").disabled = 1; document.getElementById("titleDivId").style.color = '#ff0000' } } catch(exception) { alert('<p>Error' + exception); } function sendmsg( arg ) { var val = document.getElementById("msgTextId").value if( arg === "bcast" ) val = "bcast "+val; publisher_ws.send(val); document.getElementById("msgTextId").value = ""; } function sendquit() { publisher_ws.send("quit"); } </script> </html>