comparison shterm.js @ 11:481dcee353c9

webtty: switch all server responses to JSON.
author John "Elwin" Edwards <elwin@sdf.org>
date Fri, 11 May 2012 13:33:48 -0700
parents d051aad3e95f
children 9e1d83f50c9e
comparison
equal deleted inserted replaced
10:d051aad3e95f 11:481dcee353c9
117 if (!termemu.alive) 117 if (!termemu.alive)
118 return; 118 return;
119 var datareq = new XMLHttpRequest(); 119 var datareq = new XMLHttpRequest();
120 datareq.onreadystatechange = function () { 120 datareq.onreadystatechange = function () {
121 if (datareq.readyState == 4 && datareq.status == 200) { 121 if (datareq.readyState == 4 && datareq.status == 200) {
122 var datalines = datareq.responseText.split("\n"); 122 var response = JSON.parse(this.responseText);
123 if (!datalines[0]) { 123 if (!response.t)
124 return; 124 return;
125 } 125 else if (response.t == "E") {
126 else if (datalines[0] == "E1") { 126 if (response.c == 1) {
127 termemu.alive = false; 127 termemu.alive = false;
128 return; 128 debug(1, "Server error: " + response.s);
129 } 129 }
130 else if (datalines[0].charAt(0) != 'd') { 130 }
131 return; 131 else if (response.t == "n")
132 } 132 ajaxstate.gotnothing();
133 if (datalines[1]) { 133 else if (response.t == "d") {
134 writeData(datalines[1]); 134 writeData(response.d);
135 ajaxstate.gotdata(); 135 ajaxstate.gotdata();
136 }
137 else {
138 ajaxstate.gotnothing();
139 } 136 }
140 return; 137 return;
141 } 138 }
142 }; 139 };
143 datareq.open('GET', '/feed', true); 140 datareq.open('GET', '/feed', true);
145 return; 142 return;
146 } 143 }
147 144
148 function postResponseHandler() { 145 function postResponseHandler() {
149 if (this.readyState == 4 && this.status == 200) { 146 if (this.readyState == 4 && this.status == 200) {
150 var datalines = this.responseText.split("\n"); 147 var response = JSON.parse(this.responseText);
151 if (!datalines[0]) 148 if (!response.t || response.t == "n")
152 return; 149 return;
153 else if (datalines[0] == "E1") { 150 else if (response.t == "E") {
154 termemu.alive = false; 151 if (response.c == 1) {
155 return; 152 termemu.alive = false;
156 } 153 debug(1, "Server error: " + response.s);
157 else if (datalines[0].charAt(0) != "d") 154 }
155 return;
156 }
157 else if (response.t != "d")
158 return; 158 return;
159 /* It is a data message */ 159 /* It is a data message */
160 if (datalines[1]) { 160 if (response.d) {
161 writeData(datalines[1]); 161 writeData(response.d);
162 } 162 }
163 ajaxstate.posted(); 163 ajaxstate.posted();
164 return; 164 return;
165 } 165 }
166 } 166 }
299 if (termemu.alive) 299 if (termemu.alive)
300 return; 300 return;
301 var req = new XMLHttpRequest(); 301 var req = new XMLHttpRequest();
302 req.onreadystatechange = function () { 302 req.onreadystatechange = function () {
303 if (req.readyState == 4 && req.status == 200) { 303 if (req.readyState == 4 && req.status == 200) {
304 var datalines = req.responseText.split("\n");
305 var logindict = JSON.parse(req.responseText); 304 var logindict = JSON.parse(req.responseText);
306 if (logindict.login) { 305 if (logindict.login) {
307 /* Success */ 306 /* Success */
308 termemu.resize(logindict.h, logindict.w); 307 termemu.resize(logindict.h, logindict.w);
309 termemu.alive = true; 308 termemu.alive = true;
322 321
323 function stop() { 322 function stop() {
324 var req = new XMLHttpRequest(); 323 var req = new XMLHttpRequest();
325 req.onreadystatechange = function () { 324 req.onreadystatechange = function () {
326 if (req.readyState == 4 && req.status == 200) { 325 if (req.readyState == 4 && req.status == 200) {
327 var datalines = req.responseText.split("\n");
328 /* Figure out whether or not it worked. */ 326 /* Figure out whether or not it worked. */
327 /* FIXME the server might respond with output. */
329 termemu.alive = false; 328 termemu.alive = false;
330 return; 329 return;
331 } 330 }
332 }; 331 };
333 req.open('POST', '/feed', true); 332 req.open('POST', '/feed', true);