summaryrefslogtreecommitdiff
path: root/tests/echo.html
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2011-01-19 13:19:47 -0600
committerJoel Martin <github@martintribe.org>2011-01-19 13:19:47 -0600
commit6ff5dfa02dc7f1f74750304713900b9a2a16f944 (patch)
tree17f98465345d499bba0247e4cdb77a7d17492a26 /tests/echo.html
parent9c4cf4ada2a421c935b29cbf456fd9d7fd4697c2 (diff)
downloadwebsockify-6ff5dfa02dc7f1f74750304713900b9a2a16f944.tar.gz
Strip "ws" from test names. Update TODO.
Also, rename wstest to load.
Diffstat (limited to 'tests/echo.html')
-rw-r--r--tests/echo.html176
1 files changed, 176 insertions, 0 deletions
diff --git a/tests/echo.html b/tests/echo.html
new file mode 100644
index 0000000..9e3c6d6
--- /dev/null
+++ b/tests/echo.html
@@ -0,0 +1,176 @@
+<html>
+
+ <head>
+ <title>WebSockets Echo Test</title>
+ <script src="include/base64.js"></script>
+ <script src="include/util.js"></script>
+ <script src="include/webutil.js"></script>
+ <!-- Uncomment to activate firebug lite -->
+ <!--
+ <script type='text/javascript'
+ src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
+ -->
+
+
+ </head>
+
+ <body>
+
+ Host: <input id='host' style='width:100'>&nbsp;
+ Port: <input id='port' style='width:50'>&nbsp;
+ Encrypt: <input id='encrypt' type='checkbox'>&nbsp;
+ <input id='connectButton' type='button' value='Start' style='width:100px'
+ onclick="connect();">&nbsp;
+
+
+ <br>
+ Log:<br>
+ <textarea id="messages" style="font-size: 9;" cols=80 rows=25></textarea>
+ </body>
+
+
+ <script>
+ var ws, host = null, port = null,
+ msg_cnt = 0, send_cnt = 1, echoDelay = 500,
+ echo_ref;
+
+ function message(str) {
+ console.log(str);
+ cell = $D('messages');
+ cell.innerHTML += msg_cnt + ": " + str + "\n";
+ cell.scrollTop = cell.scrollHeight;
+ msg_cnt++;
+ }
+
+ Array.prototype.pushStr = function (str) {
+ var n = str.length;
+ for (var i=0; i < n; i++) {
+ this.push(str.charCodeAt(i));
+ }
+ }
+
+ function send_msg() {
+ if (ws.bufferedAmount > 0) {
+ console.log("Delaying send");
+ return;
+ }
+ var str = "Message #" + send_cnt, arr = [];
+ arr.pushStr(str)
+ ws.send(Base64.encode(arr));
+ message("Sent message: '" + str + "'");
+ send_cnt++;
+ }
+
+ function update_stats() {
+ $D('sent').innerHTML = sent;
+ $D('received').innerHTML = received;
+ $D('errors').innerHTML = errors;
+ }
+
+ function init_ws() {
+ console.log(">> init_ws");
+ console.log("<< init_ws");
+ }
+
+ function connect() {
+ var host = $D('host').value,
+ port = $D('port').value,
+ scheme = "ws://", uri;
+
+ console.log(">> connect");
+ if ((!host) || (!port)) {
+ console.log("must set host and port");
+ return;
+ }
+
+ if (ws) {
+ ws.close();
+ }
+
+ if ($D('encrypt').checked) {
+ scheme = "wss://";
+ }
+ uri = scheme + host + ":" + port;
+ message("connecting to " + uri);
+ ws = new WebSocket(uri);
+
+ ws.onmessage = function(e) {
+ //console.log(">> WebSockets.onmessage");
+ var arr = Base64.decode(e.data), str = "", i;
+
+ for (i = 0; i < arr.length; i++) {
+ str = str + String.fromCharCode(arr[i]);
+ }
+
+ message("Received message '" + str + "'");
+ //console.log("<< WebSockets.onmessage");
+ };
+ ws.onopen = function(e) {
+ console.log(">> WebSockets.onopen");
+ echo_ref = setInterval(send_msg, echoDelay);
+ console.log("<< WebSockets.onopen");
+ };
+ ws.onclose = function(e) {
+ console.log(">> WebSockets.onclose");
+ if (echo_ref) {
+ clearInterval(echo_ref);
+ echo_ref = null;
+ }
+ console.log("<< WebSockets.onclose");
+ };
+ ws.onerror = function(e) {
+ console.log(">> WebSockets.onerror");
+ if (echo_ref) {
+ clearInterval(echo_ref);
+ echo_ref = null;
+ }
+ console.log("<< WebSockets.onerror");
+ };
+
+ $D('connectButton').value = "Stop";
+ $D('connectButton').onclick = disconnect;
+ console.log("<< connect");
+ }
+
+ function disconnect() {
+ console.log(">> disconnect");
+ if (ws) {
+ ws.close();
+ }
+
+ if (echo_ref) {
+ clearInterval(echo_ref);
+ }
+
+ $D('connectButton').value = "Start";
+ $D('connectButton').onclick = connect;
+ console.log("<< disconnect");
+ }
+
+
+ /* If no builtin websockets then load web_socket.js */
+ if (window.WebSocket) {
+ VNC_native_ws = true;
+ } else {
+ VNC_native_ws = false;
+ console.log("Loading web-socket-js flash bridge");
+ var extra = "<script src='include/web-socket-js/swfobject.js'><\/script>";
+ extra += "<script src='include/web-socket-js/FABridge.js'><\/script>";
+ extra += "<script src='include/web-socket-js/web_socket.js'><\/script>";
+ document.write(extra);
+ }
+
+ window.onload = function() {
+ console.log("onload");
+ if (!VNC_native_ws) {
+ console.log("initializing web-socket-js flash bridge");
+ WebSocket.__swfLocation = "include/web-socket-js/WebSocketMain.swf";
+ WebSocket.__initialize();
+ }
+ var url = document.location.href;
+ $D('host').value = (url.match(/host=([^&#]*)/) || ['',''])[1];
+ $D('port').value = (url.match(/port=([^&#]*)/) || ['',''])[1];
+ }
+ </script>
+
+</html>