<?xml version = "1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<!-- 
	See COPYING for copyright and distribution information.
-->
<html xmlns = "http://www.w3.org/1999/xhtml">

<head>
	<title>Test WebSocket Support</title>

	<script type="text/javascript">
	
		function test(){
			var output = "";
			
			if ('WebSocket' in window) {
				output += "This browser support WebSocket.";
			} else {
				output += "No WebSocket support.";
			}
			
			document.getElementById('result').innerHTML += output;
			
			console.log("starting websocket...");
			if ("WebSocket" in window) {
			    var ws = new WebSocket("ws://localhost:9696");
			    
			    ws.onopen = function() {
			        console.log("WebSockets connection opened");
			        ws.send("Hello Server (from client).");
			    }
			    ws.onmessage = function(e) {
			        console.log("Got from server: " + e.data);
			    }
			    ws.onclose = function() {
			        console.log("WebSockets connection closed");
			    }
			} else {
			    alert("No WebSockets support");
			}

		}

	</script>

</head>
<body >
	<button onclick="test()">Test Now!</button>
	
	<p id="result">Result here: </p>

</body>
</html>
