From: Ian Jackson Date: Thu, 3 Sep 2020 01:16:32 +0000 (+0100) Subject: better error handling in js X-Git-Tag: otter-0.2.0~1033 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=5e27d38e0ae5f59f98a0c2fae748c93f949b9388;p=otter.git better error handling in js --- diff --git a/templates/script.ts b/templates/script.ts index fde8099f..d32ef390 100644 --- a/templates/script.ts +++ b/templates/script.ts @@ -64,6 +64,7 @@ interface DispatchTable { [key: string]: H }; var general_timeout : number = 10000; var messages : DispatchTable = Object(); var pieceops : DispatchTable = Object(); +var update_error_handlers : DispatchTable = Object(); var our_dnd_type = "text/puvnex-game-server-dummy"; var api_queue : [string, Object][] = []; var api_posting = false; @@ -544,6 +545,13 @@ messages.Recorded = function gen = j.gen; } +messages.Error = function +(m: any) { + console.log('ERROR UPDATE ', m); + var k = Object.keys(m)[0]; + update_error_handlers[k](m[k]); +} + function piece_checkconflict_nrda(piece: PieceId, p: PieceInfo): boolean { if (p.cseq != null) { p.cseq = null; @@ -597,13 +605,21 @@ function startup() { var es = new EventSource("/_/updates/"+ctoken+'/'+gen); es.onmessage = function(event) { // xxx want to trap errors and ask user to reload - console.log('GOTEVE', event) - var [tgen, ms] = JSON.parse(event.data); - for (var m of ms) { - var k = Object.keys(m)[0]; - messages[k](m[k]); + console.log('GOTEVE', event); + var k; + var m; + try { + var [tgen, ms] = JSON.parse(event.data); + for (m of ms) { + k = Object.keys(m)[0]; + messages[k](m[k]); + } + gen = tgen; + } catch (exc) { + string_report_error('exception handling update ' + + k + ': ' + JSON.stringify(m) + ': ' + + + exc.toString()); } - gen = tgen; } es.addEventListener('commsworking', function(event) { console.log('GOTDATA', event); diff --git a/templates/session.tera b/templates/session.tera index 19e5e5e7..ad3d5bcc 100644 --- a/templates/session.tera +++ b/templates/session.tera @@ -5,7 +5,7 @@ data-load="{{ load | escape }}" >

Hi {{nick}}!

-
+

 

nothing