From 5a7e1a34f9287a67f69394a6cf3b977d48bdb41c Mon Sep 17 00:00:00 2001 From: bratelefant <59534030+bratelefant@users.noreply.github.com> Date: Sat, 19 Aug 2023 12:52:35 +0200 Subject: [PATCH 1/3] set subs to not ready on disconnect --- src/Meteor.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Meteor.js b/src/Meteor.js index f3c5663..d85fe3d 100644 --- a/src/Meteor.js +++ b/src/Meteor.js @@ -50,6 +50,11 @@ const Meteor = { disconnect() { if (Data.ddp) { Data.ddp.disconnect(); + for (var i in Data.subscriptions) { + const sub = Data.subscriptions[i]; + sub.ready = false; + sub.readyDeps.changed(); + } } }, _subscriptionsRestart() { From 7999b8b915a6494715843ed68130e565ebca880f Mon Sep 17 00:00:00 2001 From: bratelefant <59534030+bratelefant@users.noreply.github.com> Date: Sat, 19 Aug 2023 14:28:23 +0200 Subject: [PATCH 2/3] also mark as unready on server disconnects --- src/Meteor.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Meteor.js b/src/Meteor.js index d85fe3d..15a87a2 100644 --- a/src/Meteor.js +++ b/src/Meteor.js @@ -50,11 +50,6 @@ const Meteor = { disconnect() { if (Data.ddp) { Data.ddp.disconnect(); - for (var i in Data.subscriptions) { - const sub = Data.subscriptions[i]; - sub.ready = false; - sub.readyDeps.changed(); - } } }, _subscriptionsRestart() { @@ -174,6 +169,13 @@ const Meteor = { console.info('Disconnected from DDP server.'); } + // Mark subscriptions as ready=false + for (var i in Data.subscriptions) { + const sub = Data.subscriptions[i]; + sub.ready = false; + sub.readyDeps.changed(); + } + if (!Data.ddp.autoReconnect) return; if (!lastDisconnect || new Date() - lastDisconnect > 3000) { From 6fd0e1711aed46c75519b16afbc94e420cf57382 Mon Sep 17 00:00:00 2001 From: bratelefant <59534030+bratelefant@users.noreply.github.com> Date: Wed, 6 Sep 2023 16:02:06 +0200 Subject: [PATCH 3/3] Add _lastSessionId to ddp --- lib/ddp.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/ddp.js b/lib/ddp.js index 81d61c8..c55c72f 100644 --- a/lib/ddp.js +++ b/lib/ddp.js @@ -115,6 +115,7 @@ export default class DDP extends EventEmitter { this.socket.on('message:in', (message) => { if (message.msg === 'connected') { this.status = 'connected'; + this._lastSessionId = message.session; this.messageQueue.process(); this.emit('connected'); } else if (message.msg === 'ping') {