From 16de5aa3d3fe5585f4e1dc085358515ae637c4d5 Mon Sep 17 00:00:00 2001 From: lilia Date: Wed, 9 Sep 2015 01:24:36 -0700 Subject: [PATCH] Improve reconnect logic Always test connectivity with an http request after a websocket closes, regardless of what code/error it closed with. If that request succeeds, automatically reconnect the socket. // FREEBIE --- js/libtextsecure.js | 14 ++++++-------- libtextsecure/message_receiver.js | 14 ++++++-------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/js/libtextsecure.js b/js/libtextsecure.js index 848ee1d15..724ffb884 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -39398,14 +39398,12 @@ function generateKeys(count, progressCallback) { // initialize the socket and start listening for messages this.socket = TextSecureServer.getMessageWebsocket(url); this.socket.onclose = function(e) { - if (e.code === 1006) { - // possible 403. Make an request to confirm - TextSecureServer.getDevices(textsecure.storage.user.getNumber()).catch(function(e) { - var ev = new Event('textsecure:error'); - ev.error = e; - eventTarget.dispatchEvent(ev); - }); - } + // possible 403. Make a request to confirm + TextSecureServer.getDevices(textsecure.storage.user.getNumber()).catch(function(e) { + var ev = new Event('textsecure:error'); + ev.error = e; + eventTarget.dispatchEvent(ev); + }).then(this.connect.bind(this)); // No HTTP error? Reconnect. }; this.wsr = new WebSocketResource(this.socket, { diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index fc99060ce..75ccd66b7 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -22,14 +22,12 @@ // initialize the socket and start listening for messages this.socket = TextSecureServer.getMessageWebsocket(url); this.socket.onclose = function(e) { - if (e.code === 1006) { - // possible 403. Make an request to confirm - TextSecureServer.getDevices(textsecure.storage.user.getNumber()).catch(function(e) { - var ev = new Event('textsecure:error'); - ev.error = e; - eventTarget.dispatchEvent(ev); - }); - } + // possible 403. Make a request to confirm + TextSecureServer.getDevices(textsecure.storage.user.getNumber()).catch(function(e) { + var ev = new Event('textsecure:error'); + ev.error = e; + eventTarget.dispatchEvent(ev); + }).then(this.connect.bind(this)); // No HTTP error? Reconnect. }; this.wsr = new WebSocketResource(this.socket, {