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 ws = new_ws(get_appropriate_ws_url(""), "lws-minimal-pmd-bulk");
36d4afb5ceSopenharmony_ci	try {
37d4afb5ceSopenharmony_ci		ws.onopen = function() {
38d4afb5ceSopenharmony_ci			document.getElementById("r").disabled = 0;
39d4afb5ceSopenharmony_ci			document.getElementById("status").textContent = "ws open "+ ws.extensions;
40d4afb5ceSopenharmony_ci		};
41d4afb5ceSopenharmony_ci
42d4afb5ceSopenharmony_ci		ws.onmessage = function got_packet(msg) {
43d4afb5ceSopenharmony_ci			console.log("Received ws message len " + msg.data.size);
44d4afb5ceSopenharmony_ci			document.getElementById("r").value =
45d4afb5ceSopenharmony_ci				document.getElementById("r").value + "\nReceived: " + msg.data.size + " bytes\n";
46d4afb5ceSopenharmony_ci			document.getElementById("r").scrollTop =
47d4afb5ceSopenharmony_ci				document.getElementById("r").scrollHeight;
48d4afb5ceSopenharmony_ci
49d4afb5ceSopenharmony_ci			/* echo it back */
50d4afb5ceSopenharmony_ci			ws.send(msg.data);
51d4afb5ceSopenharmony_ci		};
52d4afb5ceSopenharmony_ci
53d4afb5ceSopenharmony_ci		ws.onclose = function(){
54d4afb5ceSopenharmony_ci			document.getElementById("r").disabled = 1;
55d4afb5ceSopenharmony_ci			document.getElementById("status").textContent = "ws closed";
56d4afb5ceSopenharmony_ci		};
57d4afb5ceSopenharmony_ci	} catch(exception) {
58d4afb5ceSopenharmony_ci		alert("<p>Error " + exception);
59d4afb5ceSopenharmony_ci	}
60d4afb5ceSopenharmony_ci
61d4afb5ceSopenharmony_ci}, false);
62d4afb5ceSopenharmony_ci
63