Mercurial > hg > rlgwebd
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); |