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); |
