wsencoding.html 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <html>
  2. <head><title>WebSockets Test</title></head>
  3. <body>
  4. Host: <input id='host' style='width:100'>&nbsp;
  5. Port: <input id='port' style='width:50'>&nbsp;
  6. Encrypt: <input id='encrypt' type='checkbox'>&nbsp;
  7. <input id='connectButton' type='button' value='Start' style='width:100px'
  8. onclick="connect();">&nbsp;
  9. <br>
  10. Messages:<br>
  11. <textarea id="messages" style="font-size: 9;" cols=80 rows=25></textarea>
  12. </body>
  13. <!-- Uncomment to activate firebug lite -->
  14. <!--
  15. <script type='text/javascript'
  16. src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
  17. -->
  18. <script src="include/base64.js"></script>
  19. <script src="include/util.js"></script>
  20. <script src="include/webutil.js"></script>
  21. <script>
  22. var host = null, port = null;
  23. var ws = null;
  24. var VNC_native_ws = true;
  25. function message(str) {
  26. console.log(str);
  27. cell = $('messages');
  28. cell.innerHTML += str + "\n";
  29. cell.scrollTop = cell.scrollHeight;
  30. }
  31. function print_response(str) {
  32. message("str.length: " + str.length);
  33. for (i=0; i < str.length; i++) {
  34. message(i + ": " + (str.charCodeAt(i) % 256));
  35. }
  36. }
  37. function send() {
  38. var str = "";
  39. str = str + String.fromCharCode(0x81);
  40. str = str + String.fromCharCode(0xff);
  41. for (var i=0; i<256; i+=4) {
  42. str = str + String.fromCharCode(i);
  43. }
  44. str = str + String.fromCharCode(0);
  45. str = str + String.fromCharCode(0x40);
  46. str = str + String.fromCharCode(0x41);
  47. str = str + String.fromCharCode(0xff);
  48. str = str + String.fromCharCode(0x81);
  49. ws.send(str);
  50. }
  51. function init_ws() {
  52. console.log(">> init_ws");
  53. var scheme = "ws://";
  54. if ($('encrypt').checked) {
  55. scheme = "wss://";
  56. }
  57. var uri = scheme + host + ":" + port;
  58. console.log("connecting to " + uri);
  59. ws = new WebSocket(uri);
  60. ws.onmessage = function(e) {
  61. console.log(">> WebSockets.onmessage");
  62. print_response(e.data);
  63. console.log("<< WebSockets.onmessage");
  64. };
  65. ws.onopen = function(e) {
  66. console.log(">> WebSockets.onopen");
  67. send();
  68. console.log("<< WebSockets.onopen");
  69. };
  70. ws.onclose = function(e) {
  71. console.log(">> WebSockets.onclose");
  72. console.log("<< WebSockets.onclose");
  73. };
  74. ws.onerror = function(e) {
  75. console.log(">> WebSockets.onerror");
  76. console.log(" " + e);
  77. console.log("<< WebSockets.onerror");
  78. };
  79. console.log("<< init_ws");
  80. }
  81. function connect() {
  82. console.log(">> connect");
  83. host = $('host').value;
  84. port = $('port').value;
  85. if ((!host) || (!port)) {
  86. console.log("must set host and port");
  87. return;
  88. }
  89. if (ws) {
  90. ws.close();
  91. }
  92. init_ws();
  93. $('connectButton').value = "Stop";
  94. $('connectButton').onclick = disconnect;
  95. console.log("<< connect");
  96. }
  97. function disconnect() {
  98. console.log(">> disconnect");
  99. if (ws) {
  100. ws.close();
  101. }
  102. $('connectButton').value = "Start";
  103. $('connectButton').onclick = connect;
  104. console.log("<< disconnect");
  105. }
  106. /* If no builtin websockets then load web_socket.js */
  107. if (! window.WebSocket) {
  108. console.log("Loading web-socket-js flash bridge");
  109. var extra = "<script src='include/web-socket-js/swfobject.js'><\/script>";
  110. extra += "<script src='include/web-socket-js/FABridge.js'><\/script>";
  111. extra += "<script src='include/web-socket-js/web_socket.js'><\/script>";
  112. document.write(extra);
  113. VNC_native_ws = false;
  114. }
  115. window.onload = function() {
  116. console.log("onload");
  117. if (! VNC_native_ws) {
  118. WebSocket.__swfLocation = "include/web-socket-js/WebSocketMain.swf";
  119. WebSocket.__initialize();
  120. }
  121. var url = document.location.href;
  122. $('host').value = (url.match(/host=([^&#]*)/) || ['',''])[1];
  123. $('port').value = (url.match(/port=([^&#]*)/) || ['',''])[1];
  124. }
  125. </script>
  126. </html>