websocket.xhtml 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <!DOCTYPE HTML>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta charset="UTF-8"></meta>
  5. <title>Websocket test</title>
  6. <style type="text/css" media="screen">
  7. body { background:#eee; margin:0 }
  8. .main {
  9. display:block; border:1px solid #ccc; position:absolute;
  10. top:5%; left:5%; width:90%; height:90%; background:#fff;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <script type="text/javascript"><![CDATA[
  16. var connection;
  17. var websock_text_field;
  18. var hand_hour;
  19. var hand_min;
  20. function webSockKeepAlive() {
  21. if (keepAlive) {
  22. connection.send('client still alive');
  23. console.log('send keep alive')
  24. setTimeout("webSockKeepAlive()", 10000);
  25. }
  26. }
  27. function load() {
  28. connection = new WebSocket("ws://" + window.location.host + "/websocket.lua");
  29. websock_text_field = document.getElementById('websock_text_field');
  30. hand_min = document.getElementById('hand_min');
  31. hand_hour = document.getElementById('hand_hour');
  32. connection.onopen = function () {
  33. keepAlive = true;
  34. webSockKeepAlive();
  35. };
  36. // Log errors
  37. connection.onerror = function (error) {
  38. keepAlive = false;
  39. alert("WebSocket error");
  40. connection.close();
  41. };
  42. // Log messages from the server
  43. connection.onmessage = function (e) {
  44. var lCmd = e.data.substring(0,3);
  45. if (lCmd == "-->") {
  46. console.log(e.data);
  47. var lDirection = Number(e.data.substring(5));
  48. if (e.data[3] == 'h') {
  49. hand_hour.setAttribute("transform", "rotate(" + lDirection + " 800 600)");
  50. }
  51. if (e.data[3] == 'm') {
  52. hand_min.setAttribute("transform", "rotate(" + lDirection + " 800 600)");
  53. }
  54. } else {
  55. websock_text_field.textContent = e.data;
  56. }
  57. };
  58. console.log("load");
  59. }
  60. ]]></script>
  61. <svg class="main"
  62. xmlns="http://www.w3.org/2000/svg"
  63. xmlns:svg="http://www.w3.org/2000/svg"
  64. version="1.1"
  65. xmlns:xlink="http://www.w3.org/1999/xlink"
  66. viewBox="0 0 1600 1200" preserveAspectRatio="xMinYMin meet"
  67. onload="load()"
  68. >
  69. <circle id="line_a" cx="800" cy="600" r="500" style="stroke:rgb(255,0,0); stroke-width:5; fill:rgb(200,200,200)"/>
  70. <polygon points="800,200 900,300 850,300 850,600 750,600 750,300 700,300" style="fill:rgb(100,0,0)" transform="rotate(0,800,600)" id="hand_hour"/>
  71. <polygon points="800,100 840,200 820,200 820,600 780,600 780,200 760,200" style="fill:rgb(0,100,0)" transform="rotate(0,800,600)" id="hand_min"/>
  72. <text id="websock_text_field" x="800" y="600" text-anchor="middle" font-size="50px" fill="red">No websocket connection yet</text>
  73. </svg>
  74. </body>
  75. </html>