From 91bdffab3376d8bfb490d10a2d8913d77ede96ad Mon Sep 17 00:00:00 2001 From: Mark Walker Date: Sun, 10 May 2015 18:58:18 -0700 Subject: [PATCH] Stop sockjs from multiplying on reconnect Have you ever noticed when developing that every time you stop and start the server, the terminal window gets an extra duplicate line for every reconnect attempt? Well, it's because (I think) "delete" in javascript just removes the indicated name from the namespace, it doesn't actually free up an object. Those zombie objects are still there and wake up (for some transports) on reconnect. Might be different in SockJS v1 or later. --- src/octoprint/static/js/app/dataupdater.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/octoprint/static/js/app/dataupdater.js b/src/octoprint/static/js/app/dataupdater.js index d547a16c..4172b459 100644 --- a/src/octoprint/static/js/app/dataupdater.js +++ b/src/octoprint/static/js/app/dataupdater.js @@ -22,6 +22,7 @@ function DataUpdater(allViewModels) { }; self.reconnect = function() { + self._socket.close(); delete self._socket; self.connect(); }; @@ -31,7 +32,11 @@ function DataUpdater(allViewModels) { self._autoReconnectTrial = 0; }; - self._onclose = function() { + self._onclose = function(e) { + if (e.code == 1000) { + // it was us calling close + return; + } if (self._autoReconnectTrial >= self._autoReconnectDialogIndex) { // Only consider it a real disconnect if the trial number has exceeded our threshold.