1<html> 2<head> 3<title>WebSocket Test</title> 4<script language="JavaScript"> 5 6var ws = null; 7 8function setup() { 9 // Match the secure state of the current origin. 10 var origin = location.origin; 11 if (origin.indexOf('http://') == 0) { 12 origin = origin.replace('http://', 'ws://'); 13 } else if (origin.indexOf('https://') == 0) { 14 origin = origin.replace('https://', 'wss://'); 15 } else { 16 origin = ''; 17 } 18 19 if (origin.length > 0) 20 document.getElementById('server').value = origin; 21 document.getElementById('server').disabled = false; 22 23 if (location.hostname != 'localhost') 24 document.getElementById('warning').style.display = 'block'; 25 26 setConnected(false); 27} 28 29function setConnected(connected) { 30 document.getElementById('connect').disabled = connected; 31 document.getElementById('disconnect').disabled = !connected; 32 document.getElementById('message').disabled = !connected; 33 document.getElementById('response').disabled = !connected; 34 document.getElementById('send').disabled = !connected; 35} 36 37function doConnect() { 38 var url = document.getElementById('server').value; 39 if (url.indexOf('ws://') < 0 && url.indexOf('wss://') < 0) { 40 alert('Specify a valid WebSocket server URL.'); 41 return; 42 } 43 44 if (ws) { 45 alert('WebSocket is already connected.'); 46 return; 47 } 48 49 ws = new WebSocket(url); 50 ws.onopen = function() { setConnected(true); }; 51 ws.onmessage = function(event) { 52 document.getElementById('response').value = event.data; 53 }; 54 ws.onclose = function(event) { 55 setConnected(false); 56 ws = null; 57 }; 58 ws.onerror = function(event) { 59 if (ws.readyState == 3) 60 alert('WebSocket connection failed.'); 61 } 62} 63 64function doDisconnect() { 65 if (!ws) { 66 alert('WebSocket is not currently connected.'); 67 return; 68 } 69 70 ws.close(); 71} 72 73function doSend() { 74 if (!ws) { 75 alert('WebSocket is not currently connected.'); 76 return; 77 } 78 79 var value = document.getElementById('message').value; 80 if (value.length > 0) 81 ws.send(value); 82} 83 84</script> 85 86</head> 87<body bgcolor="white" onload="setup()"> 88<div id="warning" style="display:none;color:red;font-weight:bold;"> 89This page is most useful when loaded from localhost. 90You should first create a server using the <a href="http://tests/server">HTTP/WebSocket Server test</a>. 91</div> 92<p> 93This page tests a WebSocket connection. 94The example implementation in server_test.cc will then echo the message contents in reverse. 95</p> 96<form> 97Server URL: <input type="text" id="server" value="" disabled="true"> 98<br/><input type="button" id="connect" onclick="doConnect()" value="Connect" disabled="true"> 99<input type="button" id="disconnect" onclick="doDisconnect()" value="Disconnect" disabled="true"> 100<br/>Message: <input type="text" id="message" value="Test Message" disabled="true"> 101<input type="button" id="send" onclick="doSend()" value="Send" disabled="true"> 102<br/>Response: <input type="text" id="response" value="" disabled="true"> 103<br/><br/> 104The example implementation in server_test.cc can also serve the HTTP-based <a href="other_tests">Other Tests</a>. 105</form> 106</body> 107</html> 108