@aws-amplify/pubsub 4.4.10 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/aws-amplify-pubsub.js +178 -141
- package/dist/aws-amplify-pubsub.js.map +1 -1
- package/dist/aws-amplify-pubsub.min.js +2 -2
- package/dist/aws-amplify-pubsub.min.js.map +1 -1
- package/lib/Providers/AWSAppSyncRealTimeProvider/index.d.ts +1 -1
- package/lib/Providers/AWSAppSyncRealTimeProvider/index.js +8 -8
- package/lib/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
- package/lib/Providers/MqttOverWSProvider.d.ts +1 -0
- package/lib/Providers/MqttOverWSProvider.js +23 -1
- package/lib/Providers/MqttOverWSProvider.js.map +1 -1
- package/lib/Providers/{AWSAppSyncRealTimeProvider/constants.d.ts → constants.d.ts} +0 -0
- package/lib/Providers/{AWSAppSyncRealTimeProvider/constants.js → constants.js} +0 -0
- package/lib/Providers/constants.js.map +1 -0
- package/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.d.ts +1 -1
- package/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.js +8 -8
- package/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
- package/lib-esm/Providers/MqttOverWSProvider.d.ts +1 -0
- package/lib-esm/Providers/MqttOverWSProvider.js +24 -2
- package/lib-esm/Providers/MqttOverWSProvider.js.map +1 -1
- package/lib-esm/Providers/{AWSAppSyncRealTimeProvider/constants.d.ts → constants.d.ts} +0 -0
- package/lib-esm/Providers/{AWSAppSyncRealTimeProvider/constants.js → constants.js} +0 -0
- package/lib-esm/Providers/constants.js.map +1 -0
- package/package.json +5 -5
- package/src/Providers/AWSAppSyncRealTimeProvider/index.ts +14 -14
- package/src/Providers/MqttOverWSProvider.ts +43 -2
- package/src/Providers/{AWSAppSyncRealTimeProvider/constants.ts → constants.ts} +0 -0
- package/lib/Providers/AWSAppSyncRealTimeProvider/constants.js.map +0 -1
- package/lib-esm/Providers/AWSAppSyncRealTimeProvider/constants.js.map +0 -1
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
SOCKET_STATUS,
|
|
45
45
|
START_ACK_TIMEOUT,
|
|
46
46
|
SUBSCRIPTION_STATUS,
|
|
47
|
-
} from '
|
|
47
|
+
} from '../constants';
|
|
48
48
|
import {
|
|
49
49
|
ConnectionStateMonitor,
|
|
50
50
|
CONNECTION_CHANGE,
|
|
@@ -747,20 +747,20 @@ export class AWSAppSyncRealTimeProvider extends AbstractPubSubProvider {
|
|
|
747
747
|
};
|
|
748
748
|
this.awsRealTimeSocket.send(JSON.stringify(gqlInit));
|
|
749
749
|
|
|
750
|
-
|
|
751
|
-
|
|
750
|
+
const checkAckOk = (ackOk: boolean) => {
|
|
751
|
+
if (!ackOk) {
|
|
752
|
+
this.connectionStateMonitor.record(
|
|
753
|
+
CONNECTION_CHANGE.CONNECTION_FAILED
|
|
754
|
+
);
|
|
755
|
+
rej(
|
|
756
|
+
new Error(
|
|
757
|
+
`Connection timeout: ack from AWSAppSyncRealTime was not received after ${CONNECTION_INIT_TIMEOUT} ms`
|
|
758
|
+
)
|
|
759
|
+
);
|
|
760
|
+
}
|
|
761
|
+
};
|
|
752
762
|
|
|
753
|
-
|
|
754
|
-
if (!ackOk) {
|
|
755
|
-
this.connectionStateMonitor.record(
|
|
756
|
-
CONNECTION_CHANGE.CONNECTION_FAILED
|
|
757
|
-
);
|
|
758
|
-
rej(
|
|
759
|
-
new Error(
|
|
760
|
-
`Connection timeout: ack from AWSRealTime was not received on ${CONNECTION_INIT_TIMEOUT} ms`
|
|
761
|
-
)
|
|
762
|
-
);
|
|
763
|
-
}
|
|
763
|
+
setTimeout(() => checkAckOk(ackOk), CONNECTION_INIT_TIMEOUT);
|
|
764
764
|
}
|
|
765
765
|
});
|
|
766
766
|
})();
|
|
@@ -16,7 +16,13 @@ import Observable from 'zen-observable-ts';
|
|
|
16
16
|
|
|
17
17
|
import { AbstractPubSubProvider } from './PubSubProvider';
|
|
18
18
|
import { ProviderOptions, SubscriptionObserver } from '../types';
|
|
19
|
-
import { ConsoleLogger as Logger } from '@aws-amplify/core';
|
|
19
|
+
import { ConsoleLogger as Logger, Hub } from '@aws-amplify/core';
|
|
20
|
+
import {
|
|
21
|
+
ConnectionStateMonitor,
|
|
22
|
+
CONNECTION_CHANGE,
|
|
23
|
+
} from '../utils/ConnectionStateMonitor';
|
|
24
|
+
import { AMPLIFY_SYMBOL } from './constants';
|
|
25
|
+
import { CONNECTION_STATE_CHANGE } from '..';
|
|
20
26
|
|
|
21
27
|
const logger = new Logger('MqttOverWSProvider');
|
|
22
28
|
|
|
@@ -72,13 +78,32 @@ class ClientsQueue {
|
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
80
|
|
|
81
|
+
const dispatchPubSubEvent = (event: string, data: any, message: string) => {
|
|
82
|
+
Hub.dispatch('pubsub', { event, data, message }, 'PubSub', AMPLIFY_SYMBOL);
|
|
83
|
+
};
|
|
84
|
+
|
|
75
85
|
const topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';
|
|
76
86
|
|
|
77
87
|
export class MqttOverWSProvider extends AbstractPubSubProvider {
|
|
78
88
|
private _clientsQueue = new ClientsQueue();
|
|
89
|
+
private readonly connectionStateMonitor = new ConnectionStateMonitor();
|
|
79
90
|
|
|
80
91
|
constructor(options: MqttProviderOptions = {}) {
|
|
81
92
|
super({ ...options, clientId: options.clientId || uuid() });
|
|
93
|
+
|
|
94
|
+
// Monitor the connection health state and pass changes along to Hub
|
|
95
|
+
this.connectionStateMonitor.connectionStateObservable.subscribe(
|
|
96
|
+
connectionStateChange => {
|
|
97
|
+
dispatchPubSubEvent(
|
|
98
|
+
CONNECTION_STATE_CHANGE,
|
|
99
|
+
{
|
|
100
|
+
provider: this,
|
|
101
|
+
connectionState: connectionStateChange,
|
|
102
|
+
},
|
|
103
|
+
`Connection state is ${connectionStateChange}`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
);
|
|
82
107
|
}
|
|
83
108
|
|
|
84
109
|
protected get clientId() {
|
|
@@ -149,6 +174,7 @@ export class MqttOverWSProvider extends AbstractPubSubProvider {
|
|
|
149
174
|
public async newClient({ url, clientId }: MqttProviderOptions): Promise<any> {
|
|
150
175
|
logger.debug('Creating new MQTT client', clientId);
|
|
151
176
|
|
|
177
|
+
this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);
|
|
152
178
|
// @ts-ignore
|
|
153
179
|
const client = new Paho.Client(url, clientId);
|
|
154
180
|
// client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));
|
|
@@ -168,6 +194,7 @@ export class MqttOverWSProvider extends AbstractPubSubProvider {
|
|
|
168
194
|
errorCode: number;
|
|
169
195
|
}) => {
|
|
170
196
|
this.onDisconnect({ clientId, errorCode, ...args });
|
|
197
|
+
this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);
|
|
171
198
|
};
|
|
172
199
|
|
|
173
200
|
await new Promise((resolve, reject) => {
|
|
@@ -175,10 +202,19 @@ export class MqttOverWSProvider extends AbstractPubSubProvider {
|
|
|
175
202
|
useSSL: this.isSSLEnabled,
|
|
176
203
|
mqttVersion: 3,
|
|
177
204
|
onSuccess: () => resolve(client),
|
|
178
|
-
onFailure:
|
|
205
|
+
onFailure: () => {
|
|
206
|
+
reject();
|
|
207
|
+
this.connectionStateMonitor.record(
|
|
208
|
+
CONNECTION_CHANGE.CONNECTION_FAILED
|
|
209
|
+
);
|
|
210
|
+
},
|
|
179
211
|
});
|
|
180
212
|
});
|
|
181
213
|
|
|
214
|
+
this.connectionStateMonitor.record(
|
|
215
|
+
CONNECTION_CHANGE.CONNECTION_ESTABLISHED
|
|
216
|
+
);
|
|
217
|
+
|
|
182
218
|
return client;
|
|
183
219
|
}
|
|
184
220
|
|
|
@@ -196,6 +232,7 @@ export class MqttOverWSProvider extends AbstractPubSubProvider {
|
|
|
196
232
|
|
|
197
233
|
if (client && client.isConnected()) {
|
|
198
234
|
client.disconnect();
|
|
235
|
+
this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);
|
|
199
236
|
}
|
|
200
237
|
this.clientsQueue.remove(clientId);
|
|
201
238
|
}
|
|
@@ -293,6 +330,10 @@ export class MqttOverWSProvider extends AbstractPubSubProvider {
|
|
|
293
330
|
this._clientIdObservers.get(clientId)?.delete(observer);
|
|
294
331
|
// No more observers per client => client not needed anymore
|
|
295
332
|
if (this._clientIdObservers.get(clientId)?.size === 0) {
|
|
333
|
+
this.connectionStateMonitor.record(
|
|
334
|
+
CONNECTION_CHANGE.CLOSING_CONNECTION
|
|
335
|
+
);
|
|
336
|
+
|
|
296
337
|
this.disconnect(clientId);
|
|
297
338
|
this._clientIdObservers.delete(clientId);
|
|
298
339
|
}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/Providers/AWSAppSyncRealTimeProvider/constants.ts"],"names":[],"mappings":";;AAAa,QAAA,YAAY,GAAG,IAAI,CAAC;AAEpB,QAAA,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnD,IAAY,aAmDX;AAnDD,WAAY,aAAa;IACxB;;;OAGG;IACH,wDAAuC,CAAA;IACvC;;;OAGG;IACH,0DAAyC,CAAA;IACzC;;;OAGG;IACH,sDAAqC,CAAA;IACrC;;;OAGG;IACH,oCAAmB,CAAA;IACnB;;;OAGG;IACH,4CAA2B,CAAA;IAC3B;;;OAGG;IACH,kCAAiB,CAAA;IACjB;;;OAGG;IACH,iDAAgC,CAAA;IAChC;;;OAGG;IACH,kCAAiB,CAAA;IACjB;;;OAGG;IACH,0CAAyB,CAAA;IACzB;;;OAGG;IACH,oCAAmB,CAAA;AACpB,CAAC,EAnDW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAmDxB;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC9B,mEAAO,CAAA;IACP,uEAAS,CAAA;IACT,iEAAM,CAAA;AACP,CAAC,EAJW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAI9B;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACxB,qDAAM,CAAA;IACN,mDAAK,CAAA;IACL,6DAAU,CAAA;AACX,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAEY,QAAA,cAAc,GAAG,CAC7B,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU;IAChE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/B,CAAC,CAAC,mBAAmB,CACZ,CAAC;AAEC,QAAA,4BAA4B,GAAG;IAC3C,MAAM,EAAE,mCAAmC;IAC3C,kBAAkB,EAAE,SAAS;IAC7B,cAAc,EAAE,iCAAiC;CACjD,CAAC;AAEF;;GAEG;AACU,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAE7C;;GAEG;AACU,QAAA,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;GAEG;AACU,QAAA,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD;;GAEG;AACU,QAAA,gCAAgC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/Providers/AWSAppSyncRealTimeProvider/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,YAAY,GAAG,IAAI,CAAC;AAEjC,MAAM,CAAC,IAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnD,MAAM,CAAN,IAAY,aAmDX;AAnDD,WAAY,aAAa;IACxB;;;OAGG;IACH,wDAAuC,CAAA;IACvC;;;OAGG;IACH,0DAAyC,CAAA;IACzC;;;OAGG;IACH,sDAAqC,CAAA;IACrC;;;OAGG;IACH,oCAAmB,CAAA;IACnB;;;OAGG;IACH,4CAA2B,CAAA;IAC3B;;;OAGG;IACH,kCAAiB,CAAA;IACjB;;;OAGG;IACH,iDAAgC,CAAA;IAChC;;;OAGG;IACH,kCAAiB,CAAA;IACjB;;;OAGG;IACH,0CAAyB,CAAA;IACzB;;;OAGG;IACH,oCAAmB,CAAA;AACpB,CAAC,EAnDW,aAAa,KAAb,aAAa,QAmDxB;AAED,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC9B,mEAAO,CAAA;IACP,uEAAS,CAAA;IACT,iEAAM,CAAA;AACP,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAED,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACxB,qDAAM,CAAA;IACN,mDAAK,CAAA;IACL,6DAAU,CAAA;AACX,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAC,IAAM,cAAc,GAAG,CAC7B,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU;IAChE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/B,CAAC,CAAC,mBAAmB,CACZ,CAAC;AAEZ,MAAM,CAAC,IAAM,4BAA4B,GAAG;IAC3C,MAAM,EAAE,mCAAmC;IAC3C,kBAAkB,EAAE,SAAS;IAC7B,cAAc,EAAE,iCAAiC;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,IAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,IAAM,gCAAgC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|