So, the workaround described here:

http://stackoverflow.com/questions/1517924/javascript-mapping-touch-events-to-mouse-events

is working :-)

Below, the completed boot.js (also with additional "Gnoga: " message 
prefixes in the logs to js console).
---

   var ws;
   var adr;
   var reconnects=0;
   var params={};
   var gnoga={};
   var pingerid;

   if (typeof gnoga_debug == 'undefined') {
      gnoga_debug = false;
   }

   function Ping_ws() {
      if (ws.readyState == 1) {
         ws.send ("0");
      }
   }

   function Shutdown_ws() {
      ws = null;
      clearInterval (pingerid);
      if (gnoga['html_on_close'] != "") {
         $(document.body).html(gnoga['html_on_close']);
       } else {
         alert ("Server connection lost " + event.reason);
       }
   }

   function Setup_ws() {
      ws.onmessage = function (event) {
         try {
            if (gnoga_debug == true) {
               console.log ("eval data = " + event.data);
            }
            eval (event.data);
         } catch (e) {
            console.error (e.message);
         }
      }

      ws.onerror = function (event) {
         console.log ("onerror: reconnect");
         ws=null;
         ws = new WebSocket (adr  + "?Old_ID=" + gnoga['Connection_ID']);
         ws.onopen = function (event) {
            console.log ("onerror: reconnect successful");
            Setup_ws();
         }
         ws.onclose = function (event) {
            console.log ("onerror: reconnect failure");
            Shutdown_ws();
         }
      }

      ws.onclose = function (event) {
         console.log ("onclose: reconnect");
         ws=null;
         ws = new WebSocket (adr  + "?Old_ID=" + gnoga['Connection_ID']);
         ws.onopen = function (event) {
            console.log ("onclose: reconnect successful");
            Setup_ws();
         }
         ws.onclose = function (event) {
            console.log ("onclose: reconnect failure");
            Shutdown_ws();
         }
      }
   }

   function touchHandler(event)
   {
       var touches = event.changedTouches,
           first = touches[0],
           type = "";
       switch(event.type)
       {
           case "touchstart": type = "mousedown"; break;
           case "touchmove":  type = "mousemove"; break;
           case "touchend":   type = "mouseup";   break;
           default:           return;
       }

       // initMouseEvent(type, canBubble, cancelable, view, clickCount,
       //                screenX, screenY, clientX, clientY, ctrlKey,
       //                altKey, shiftKey, metaKey, button, relatedTarget);

       var simulatedEvent = document.createEvent("MouseEvent");
       simulatedEvent.initMouseEvent(type, true, true, window, 1,
                                     first.screenX, first.screenY,
                                     first.clientX, first.clientY, false,
                                     false, false, false, 0/*left*/, null);

       first.target.dispatchEvent(simulatedEvent);
       event.preventDefault();
   }

   function touch2mouseinit()
   {
       document.addEventListener("touchstart", touchHandler, true);
       document.addEventListener("touchmove", touchHandler, true);
       document.addEventListener("touchend", touchHandler, true);
       document.addEventListener("touchcancel", touchHandler, true);
   }

   $( document ).ready(function() {
      var s = document.location.search;
      var tokens;
      var r = /[?&]?([^=]+)=([^&]*)/g;

      s = s.split("+").join(" ");

      while (tokens = r.exec(s)) {
         params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
      }

      if (location.protocol == "https:") {
         adr = "wss://" + location.hostname;
      } else {
         adr = "ws://" + location.hostname;
      }

      if (location.port != "") { adr = adr + ":" + location.port; }
      adr = adr + "/gnoga";

      try {
         console.log ("Gnoga: connecting to " + adr);
         ws = new WebSocket (adr);
      } catch (e) {
         console.log ("Gnoga: trying again, connecting to " + adr);
         ws = new WebSocket (adr);
      }

      if (ws != null) {
         ws.onopen = function (event) {
            console.log ("Gnoga: connection successful");
            Setup_ws();
         }
         pingerid = setInterval (function () {Ping_ws ();}, 10000);
      } else {
         document.writeln ("Gnoga: if you are seeing this your browser 
or your connection to the internet is blocking websockets.");
      }

      touch2mouseinit();

      console.log ("Gnoga: ready.");
      });


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Gnoga-list mailing list
Gnoga-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gnoga-list

Reply via email to