websocket.xhtml 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. setTimeout("webSockKeepAlive()", 10000);
  24. }
  25. }
  26. function load() {
  27. connection = new WebSocket("ws://" + window.location.host + "/websocket.lua");
  28. websock_text_field = document.getElementById('websock_text_field');
  29. hand_min = document.getElementById('hand_min');
  30. hand_hour = document.getElementById('hand_hour');
  31. connection.onopen = function () {
  32. keepAlive = true;
  33. webSockKeepAlive();
  34. };
  35. // Log errors
  36. connection.onerror = function (error) {
  37. keepAlive = false;
  38. alert("WebSocket error");
  39. connection.close();
  40. };
  41. // Log messages from the server
  42. connection.onmessage = function (e) {
  43. var lCmd = e.data.substring(0,3);
  44. if (lCmd == "-->") {
  45. //console.log(e.data);
  46. var lDirection = Number(e.data.substring(5));
  47. if (e.data[3] == 'h') {
  48. hand_hour.setAttribute("transform", "rotate(" + lDirection + " 800 600)");
  49. }
  50. if (e.data[3] == 'm') {
  51. hand_min.setAttribute("transform", "rotate(" + lDirection + " 800 600)");
  52. }
  53. } else {
  54. websock_text_field.textContent = e.data;
  55. }
  56. };
  57. }
  58. ]]></script>
  59. <svg class="main"
  60. xmlns="http://www.w3.org/2000/svg"
  61. xmlns:svg="http://www.w3.org/2000/svg"
  62. version="1.1"
  63. xmlns:xlink="http://www.w3.org/1999/xlink"
  64. viewBox="0 0 1600 1200" preserveAspectRatio="xMinYMin meet"
  65. onload="load()"
  66. >
  67. <circle id="line_a" cx="800" cy="600" r="500" style="stroke:rgb(255,0,0); stroke-width:5; fill:rgb(200,200,200)"/>
  68. <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"/>
  69. <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"/>
  70. <text id="websock_text_field" x="800" y="600" text-anchor="middle" font-size="50px" fill="red">No websocket connection yet</text>
  71. </svg>
  72. </body>
  73. </html>