]> cat aescling's git repositories - mastodon.git/commitdiff
Better manage subscriptionCounters (#14608)
authorDaigo 3 Dango <zunda@users.noreply.github.com>
Mon, 24 Aug 2020 12:06:45 +0000 (12:06 +0000)
committerGitHub <noreply@github.com>
Mon, 24 Aug 2020 12:06:45 +0000 (14:06 +0200)
Before this change:
- unsubscribe() was not called for a disconnection
- It seems that WebSocketClient calls connected() and reconnected().
  subscriptionCounters were incremented twice for a single reconnection,
  first from connected() and second from reconnected()

This might be a an additional change to
https://github.com/tootsuite/mastodon/pull/14579
to recover subscriptions after a reconnect.

app/javascript/mastodon/stream.js

index 640455b33d12ab2354c93c2983ca3c24118c1ce9..cf1388aed2556d536278caec9319137c919e2790 100644 (file)
@@ -112,11 +112,10 @@ const sharedCallbacks = {
   },
 
   disconnected () {
-    subscriptions.forEach(({ onDisconnect }) => onDisconnect());
+    subscriptions.forEach(subscription => unsubscribe(subscription));
   },
 
   reconnected () {
-    subscriptions.forEach(subscription => subscribe(subscription));
   },
 };
 
@@ -252,15 +251,8 @@ const createConnection = (streamingAPIBaseURL, accessToken, channelName, { conne
 
   const es = new EventSource(`${streamingAPIBaseURL}/api/v1/streaming/${channelName}?${params.join('&')}`);
 
-  let firstConnect = true;
-
   es.onopen = () => {
-    if (firstConnect) {
-      firstConnect = false;
-      connected();
-    } else {
-      reconnected();
-    }
+    connected();
   };
 
   KNOWN_EVENT_TYPES.forEach(type => {