1d4afb5ceSopenharmony_ci 2d4afb5ceSopenharmony_cifunction get_appropriate_ws_url(extra_url) 3d4afb5ceSopenharmony_ci{ 4d4afb5ceSopenharmony_ci var pcol; 5d4afb5ceSopenharmony_ci var u = document.URL; 6d4afb5ceSopenharmony_ci 7d4afb5ceSopenharmony_ci /* 8d4afb5ceSopenharmony_ci * We open the websocket encrypted if this page came on an 9d4afb5ceSopenharmony_ci * https:// url itself, otherwise unencrypted 10d4afb5ceSopenharmony_ci */ 11d4afb5ceSopenharmony_ci 12d4afb5ceSopenharmony_ci if (u.substring(0, 5) === "https") { 13d4afb5ceSopenharmony_ci pcol = "wss://"; 14d4afb5ceSopenharmony_ci u = u.substr(8); 15d4afb5ceSopenharmony_ci } else { 16d4afb5ceSopenharmony_ci pcol = "ws://"; 17d4afb5ceSopenharmony_ci if (u.substring(0, 4) === "http") 18d4afb5ceSopenharmony_ci u = u.substr(7); 19d4afb5ceSopenharmony_ci } 20d4afb5ceSopenharmony_ci 21d4afb5ceSopenharmony_ci u = u.split("/"); 22d4afb5ceSopenharmony_ci 23d4afb5ceSopenharmony_ci /* + "/xxx" bit is for IE10 workaround */ 24d4afb5ceSopenharmony_ci 25d4afb5ceSopenharmony_ci return pcol + u[0] + "/" + extra_url; 26d4afb5ceSopenharmony_ci} 27d4afb5ceSopenharmony_ci 28d4afb5ceSopenharmony_cifunction new_ws(urlpath, protocol) 29d4afb5ceSopenharmony_ci{ 30d4afb5ceSopenharmony_ci return new WebSocket(urlpath, protocol); 31d4afb5ceSopenharmony_ci} 32d4afb5ceSopenharmony_ci 33d4afb5ceSopenharmony_cidocument.addEventListener("DOMContentLoaded", function() { 34d4afb5ceSopenharmony_ci 35d4afb5ceSopenharmony_ci var subscriber_ws = new_ws(get_appropriate_ws_url(""), "lws-minimal-broker"); 36d4afb5ceSopenharmony_ci try { 37d4afb5ceSopenharmony_ci subscriber_ws.onopen = function() { 38d4afb5ceSopenharmony_ci document.getElementById("b").disabled = 0; 39d4afb5ceSopenharmony_ci }; 40d4afb5ceSopenharmony_ci 41d4afb5ceSopenharmony_ci subscriber_ws.onmessage =function got_packet(msg) { 42d4afb5ceSopenharmony_ci document.getElementById("r").value = 43d4afb5ceSopenharmony_ci document.getElementById("r").value + msg.data + "\n"; 44d4afb5ceSopenharmony_ci document.getElementById("r").scrollTop = 45d4afb5ceSopenharmony_ci document.getElementById("r").scrollHeight; 46d4afb5ceSopenharmony_ci }; 47d4afb5ceSopenharmony_ci 48d4afb5ceSopenharmony_ci subscriber_ws.onclose = function(){ 49d4afb5ceSopenharmony_ci document.getElementById("b").disabled = 1; 50d4afb5ceSopenharmony_ci }; 51d4afb5ceSopenharmony_ci } catch(exception) { 52d4afb5ceSopenharmony_ci alert("<p>Error " + exception); 53d4afb5ceSopenharmony_ci } 54d4afb5ceSopenharmony_ci 55d4afb5ceSopenharmony_ci var publisher_ws = new_ws(get_appropriate_ws_url("/publisher"), "lws-minimal-broker"); 56d4afb5ceSopenharmony_ci try { 57d4afb5ceSopenharmony_ci publisher_ws.onopen = function() { 58d4afb5ceSopenharmony_ci document.getElementById("m").disabled = 0; 59d4afb5ceSopenharmony_ci }; 60d4afb5ceSopenharmony_ci 61d4afb5ceSopenharmony_ci publisher_ws.onmessage =function got_packet(msg) { 62d4afb5ceSopenharmony_ci }; 63d4afb5ceSopenharmony_ci 64d4afb5ceSopenharmony_ci publisher_ws.onclose = function(){ 65d4afb5ceSopenharmony_ci document.getElementById("m").disabled = 1; 66d4afb5ceSopenharmony_ci }; 67d4afb5ceSopenharmony_ci } catch(exception) { 68d4afb5ceSopenharmony_ci alert("<p>Error " + exception); 69d4afb5ceSopenharmony_ci } 70d4afb5ceSopenharmony_ci 71d4afb5ceSopenharmony_ci function sendmsg() 72d4afb5ceSopenharmony_ci { 73d4afb5ceSopenharmony_ci publisher_ws.send(document.getElementById("m").value); 74d4afb5ceSopenharmony_ci document.getElementById("m").value = ""; 75d4afb5ceSopenharmony_ci } 76d4afb5ceSopenharmony_ci 77d4afb5ceSopenharmony_ci document.getElementById("b").addEventListener("click", sendmsg); 78d4afb5ceSopenharmony_ci 79d4afb5ceSopenharmony_ci}, false); 80d4afb5ceSopenharmony_ci 81