wsencoding.html 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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>
  21. var host = null, port = null;
  22. var ws = null;
  23. var VNC_native_ws = true;
  24. function message(str) {
  25. console.log(str);
  26. cell = $('messages');
  27. cell.innerHTML += str + "\n";
  28. cell.scrollTop = cell.scrollHeight;
  29. }
  30. function print_response(str) {
  31. message("str.length: " + str.length);
  32. for (i=0; i < str.length; i++) {
  33. message(i + ": " + (str.charCodeAt(i) % 256));
  34. }
  35. }
  36. function send() {
  37. var str = "";
  38. str = str + String.fromCharCode(0x81);
  39. str = str + String.fromCharCode(0xff);
  40. for (var i=0; i<256; i+=4) {
  41. str = str + String.fromCharCode(i);
  42. }
  43. str = str + String.fromCharCode(0);
  44. str = str + String.fromCharCode(0x40);
  45. str = str + String.fromCharCode(0x41);
  46. str = str + String.fromCharCode(0xff);
  47. str = str + String.fromCharCode(0x81);
  48. ws.send(str);
  49. }
  50. function init_ws() {
  51. console.log(">> init_ws");
  52. var scheme = "ws://";
  53. if ($('encrypt').checked) {
  54. scheme = "wss://";
  55. }
  56. var uri = scheme + host + ":" + port;
  57. //var uri = scheme + host + ":" + port + "/?b64encode";
  58. //if (RFB.use_seq) {
  59. // uri += "&seq_num";
  60. //}
  61. console.log("connecting to " + uri);
  62. ws = new WebSocket(uri);
  63. ws.onmessage = function(e) {
  64. console.log(">> WebSockets.onmessage");
  65. print_response(e.data);
  66. console.log("<< WebSockets.onmessage");
  67. };
  68. ws.onopen = function(e) {
  69. console.log(">> WebSockets.onopen");
  70. send();
  71. console.log("<< WebSockets.onopen");
  72. };
  73. ws.onclose = function(e) {
  74. console.log(">> WebSockets.onclose");
  75. console.log("<< WebSockets.onclose");
  76. };
  77. ws.onerror = function(e) {
  78. console.log(">> WebSockets.onerror");
  79. console.log(" " + e);
  80. console.log("<< WebSockets.onerror");
  81. };
  82. console.log("<< init_ws");
  83. }
  84. function connect() {
  85. console.log(">> connect");
  86. host = $('host').value;
  87. port = $('port').value;
  88. if ((!host) || (!port)) {
  89. console.log("must set host and port");
  90. return;
  91. }
  92. if (ws) {
  93. ws.close();
  94. }
  95. init_ws();
  96. $('connectButton').value = "Stop";
  97. $('connectButton').onclick = disconnect;
  98. console.log("<< connect");
  99. }
  100. function disconnect() {
  101. console.log(">> disconnect");
  102. if (ws) {
  103. ws.close();
  104. }
  105. $('connectButton').value = "Start";
  106. $('connectButton').onclick = connect;
  107. console.log("<< disconnect");
  108. }
  109. /* If no builtin websockets then load web_socket.js */
  110. if (! window.WebSocket) {
  111. console.log("Loading web-socket-js flash bridge");
  112. var extra = "<script src='include/web-socket-js/swfobject.js'><\/script>";
  113. extra += "<script src='include/web-socket-js/FABridge.js'><\/script>";
  114. extra += "<script src='include/web-socket-js/web_socket.js'><\/script>";
  115. document.write(extra);
  116. VNC_native_ws = false;
  117. }
  118. window.onload = function() {
  119. console.log("onload");
  120. if (! VNC_native_ws) {
  121. WebSocket.__swfLocation = "include/web-socket-js/WebSocketMain.swf";
  122. WebSocket.__initialize();
  123. }
  124. var url = document.location.href;
  125. $('host').value = (url.match(/host=([^&#]*)/) || ['',''])[1];
  126. $('port').value = (url.match(/port=([^&#]*)/) || ['',''])[1];
  127. }
  128. </script>
  129. </html>