• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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