diff shterm.js @ 13:bf7c26d0b66d

webtty: switch upward protocol to JSON Switch the client-to-server messages from the HTML forms format to JSON (for the webtty app). Message numbers are sent but not yet used.
author John "Elwin" Edwards <elwin@sdf.org>
date Sun, 13 May 2012 20:50:13 -0700
parents 9e1d83f50c9e
children 155f3c104759
line wrap: on
line diff
--- a/shterm.js	Sun May 13 08:47:35 2012 -0700
+++ b/shterm.js	Sun May 13 20:50:13 2012 -0700
@@ -2,6 +2,9 @@
  * is running a shell via the webtty.js server.
  */
 
+/* The number of the next packet to send. */
+var nsend = 0;
+
 // A state machine that keeps track of polling the server.
 var ajaxstate = {
   state: 0,
@@ -169,10 +172,11 @@
 
 function sendback(str) {
   /* For responding to terminal queries. */
+  var formdata = {"t": "d", "n": nsend++, "d": str};
   var datareq = new XMLHttpRequest();
   datareq.onreadystatechange = postResponseHandler;
   datareq.open('POST', '/feed', true);
-  datareq.send("keys=" + str);
+  datareq.send(JSON.stringify(formdata));
   return;
 }
 
@@ -214,10 +218,11 @@
   }
   if (termemu.alive)
     ev.preventDefault();
+  var formdata = {"t": "d", "n": nsend++, "d": code};
   var datareq = new XMLHttpRequest();
   datareq.onreadystatechange = postResponseHandler;
   datareq.open('POST', '/feed', true);
-  datareq.send("keys=" + code);
+  datareq.send(JSON.stringify(formdata));
   //dkey(code);
   return;
 }
@@ -263,10 +268,11 @@
   else
     return;
   //writeData("Sending " + keystr);
+  var formdata = {"t": "d", "n": nsend++, "d": code};
   var datareq = new XMLHttpRequest();
   datareq.onreadystatechange = postResponseHandler;
   datareq.open('POST', '/feed', true);
-  datareq.send("keys=" + keystr);
+  datareq.send(JSON.stringify(formdata));
   return;
 }
 
@@ -300,6 +306,7 @@
 function login(h, w) {
   if (termemu.alive)
     return;
+  params = {"login": true, "h": h, "w": w};
   var req = new XMLHttpRequest();
   req.onreadystatechange = function () {
     if (req.readyState == 4 && req.status == 200) {
@@ -308,6 +315,7 @@
         /* Success */
         termemu.resize(logindict.h, logindict.w);
         termemu.alive = true;
+        nsend = 0;
 	setTitle("Logged in");
         debug(1, "Logged in with id " + logindict.id);
         getData();
@@ -317,7 +325,8 @@
     }
   };
   req.open('POST', '/login', true);
-  req.send("login=login&h=" + String(h) + "&w=" + String(w));
+  req.send(JSON.stringify(params));
+  //req.send("login=login&h=" + String(h) + "&w=" + String(w));
   return;
 }
 
@@ -332,7 +341,7 @@
     }
   };
   req.open('POST', '/feed', true);
-  req.send("quit=quit");
+  req.send(JSON.stringify({"t": "q", "n": nsend++}));
   return;
 }