Begin handling XMLHttpRequest errors.

Add an error handler to the various XMLHttpRequest objects.  Eventually
it will inform the user if the server is unreachable.
This commit is contained in:
John "Elwin" Edwards 2012-06-21 23:44:51 -07:00
parent 6baed7ccf1
commit 9ddc3c685c

View file

@ -233,6 +233,7 @@ function getData() {
return; return;
var datareq = new XMLHttpRequest(); var datareq = new XMLHttpRequest();
var msg = JSON.stringify({"id": session.id, "t": "n"}); var msg = JSON.stringify({"id": session.id, "t": "n"});
datareq.onerror = errHandler;
datareq.onreadystatechange = function () { datareq.onreadystatechange = function () {
if (datareq.readyState == 4 && datareq.status == 200) { if (datareq.readyState == 4 && datareq.status == 200) {
var wasdata = processMsg(datareq.responseText); var wasdata = processMsg(datareq.responseText);
@ -259,10 +260,15 @@ function postResponseHandler() {
} }
} }
function errHandler() {
debug(1, "Server unavailable?");
}
function sendback(str) { function sendback(str) {
/* For responding to terminal queries. */ /* For responding to terminal queries. */
var msgDict = {"id": session.id, "t": "d", "n": nsend++, "d": str}; var msgDict = {"id": session.id, "t": "d", "n": nsend++, "d": str};
var datareq = new XMLHttpRequest(); var datareq = new XMLHttpRequest();
datareq.onerror = errHandler;
datareq.onreadystatechange = postResponseHandler; datareq.onreadystatechange = postResponseHandler;
datareq.open('POST', '/feed', true); datareq.open('POST', '/feed', true);
datareq.send(JSON.stringify(msgDict)); datareq.send(JSON.stringify(msgDict));
@ -310,6 +316,7 @@ function sendkey(ev) {
ev.preventDefault(); ev.preventDefault();
var datareq = new XMLHttpRequest(); var datareq = new XMLHttpRequest();
var msgDict = {"id": session.id, "t": "d", "n": nsend++, "d": code}; var msgDict = {"id": session.id, "t": "d", "n": nsend++, "d": code};
datareq.onerror = errHandler;
datareq.onreadystatechange = postResponseHandler; datareq.onreadystatechange = postResponseHandler;
datareq.open('POST', '/feed', true); datareq.open('POST', '/feed', true);
datareq.send(JSON.stringify(msgDict)); datareq.send(JSON.stringify(msgDict));
@ -360,6 +367,7 @@ function vkey(c) {
return; return;
var datareq = new XMLHttpRequest(); var datareq = new XMLHttpRequest();
var msgDict = {"id": session.id, "t": "d", "n": nsend++, "d": keystr}; var msgDict = {"id": session.id, "t": "d", "n": nsend++, "d": keystr};
datareq.onerror = errHandler;
datareq.onreadystatechange = postResponseHandler; datareq.onreadystatechange = postResponseHandler;
datareq.open('POST', '/feed', true); datareq.open('POST', '/feed', true);
datareq.send(JSON.stringify(msgDict)); datareq.send(JSON.stringify(msgDict));
@ -402,6 +410,7 @@ function formlogin(ev) {
loginmsg["name"] = document.getElementById("input_name").value; loginmsg["name"] = document.getElementById("input_name").value;
loginmsg["pw"] = document.getElementById("input_pw").value; loginmsg["pw"] = document.getElementById("input_pw").value;
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
req.onerror = errHandler;
req.onreadystatechange = function () { req.onreadystatechange = function () {
if (req.readyState != 4 || req.status != 200) if (req.readyState != 4 || req.status != 200)
return; return;
@ -437,6 +446,7 @@ function getcurrent(clear) {
statInterval = window.setInterval(getcurrent, statDelta); statInterval = window.setInterval(getcurrent, statDelta);
} }
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
req.onerror = errHandler;
req.onreadystatechange = function () { req.onreadystatechange = function () {
if (req.readyState != 4 || req.status != 200) if (req.readyState != 4 || req.status != 200)
return; return;
@ -499,6 +509,7 @@ function getchoices() {
if (session.id != null || !session.lcred) if (session.id != null || !session.lcred)
return; return;
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
req.onerror = errHandler;
req.onreadystatechange = function () { req.onreadystatechange = function () {
if (req.readyState != 4 || req.status != 200) if (req.readyState != 4 || req.status != 200)
return; return;
@ -572,6 +583,7 @@ function startgame(game) {
smsg["h"] = 24; smsg["h"] = 24;
smsg["w"] = 80; smsg["w"] = 80;
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
req.onerror = errHandler;
req.onreadystatechange = function () { req.onreadystatechange = function () {
if (req.readyState != 4 || req.status != 200) if (req.readyState != 4 || req.status != 200)
return; return;
@ -603,6 +615,7 @@ function startwatching(gamenumber) {
return; return;
var wmsg = {"n": Number(gamenumber)}; var wmsg = {"n": Number(gamenumber)};
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
req.onerror = errHandler;
req.onreadystatechange = function () { req.onreadystatechange = function () {
if (req.readyState != 4 || req.status != 200) if (req.readyState != 4 || req.status != 200)
return; return;
@ -645,6 +658,7 @@ function formreg(ev) {
regmsg["pw"] = document.getElementById("regin_pw").value; regmsg["pw"] = document.getElementById("regin_pw").value;
regmsg["email"] = document.getElementById("regin_email").value; regmsg["email"] = document.getElementById("regin_email").value;
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
req.onerror = errHandler;
req.onreadystatechange = function () { req.onreadystatechange = function () {
if (req.readyState != 4 || req.status != 200) if (req.readyState != 4 || req.status != 200)
return; return;
@ -699,6 +713,7 @@ function stop() {
if (!session.id) if (!session.id)
return; return;
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
req.onerror = errHandler;
req.onreadystatechange = function () { req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200) { if (req.readyState == 4 && req.status == 200) {
processMsg(req.responseText); processMsg(req.responseText);