From fc7ae6ba65185719591d89a1be84fb3f9804943b Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 27 Jul 2016 09:54:43 -0400 Subject: [PATCH] Initialize and close WebSocket more accurately and consistently (#3683) --- webapp/client/websocket_client.jsx | 11 +++-------- webapp/components/logged_in.jsx | 6 +++--- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/webapp/client/websocket_client.jsx b/webapp/client/websocket_client.jsx index 99d2311b79..aa78d8d98b 100644 --- a/webapp/client/websocket_client.jsx +++ b/webapp/client/websocket_client.jsx @@ -10,7 +10,6 @@ export default class WebSocketClient { this.conn = null; this.sequence = 1; this.connectFailCount = 0; - this.manuallyClosed = false; this.eventCallback = null; this.responseCallbacks = {}; this.reconnectCallback = null; @@ -27,8 +26,6 @@ export default class WebSocketClient { console.log('websocket connecting to ' + connectionUrl); //eslint-disable-line no-console } - this.manuallyClosed = false; - this.conn = new WebSocket(connectionUrl); this.conn.onopen = () => { @@ -51,10 +48,6 @@ export default class WebSocketClient { console.log('websocket closed'); //eslint-disable-line no-console } - if (this.manuallyClosed) { - return; - } - this.connectFailCount++; if (this.closeCallback) { @@ -124,11 +117,13 @@ export default class WebSocketClient { } close() { - this.manuallyClosed = true; this.connectFailCount = 0; this.sequence = 1; if (this.conn && this.conn.readyState === WebSocket.OPEN) { + this.conn.onclose = () => {}; //eslint-disable-line no-empty-function this.conn.close(); + this.conn = null; + console.log('websocket closed'); //eslint-disable-line no-console } } diff --git a/webapp/components/logged_in.jsx b/webapp/components/logged_in.jsx index 14b7e138b7..ea9df36929 100644 --- a/webapp/components/logged_in.jsx +++ b/webapp/components/logged_in.jsx @@ -25,9 +25,6 @@ export default class LoggedIn extends React.Component { this.onUserChanged = this.onUserChanged.bind(this); this.setupUser = this.setupUser.bind(this); - // Initalize websocket - WebSocketActions.initialize(); - // Force logout of all tabs if one tab is logged out $(window).bind('storage', (e) => { // when one tab on a browser logs out, it sets __logout__ in localStorage to trigger other tabs to log out @@ -105,6 +102,9 @@ export default class LoggedIn extends React.Component { } componentDidMount() { + // Initalize websocket + WebSocketActions.initialize(); + // Listen for user UserStore.addChangeListener(this.onUserChanged);