@nmtjs/client 0.15.0-beta.6 → 0.15.0-beta.8

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/dist/core.d.ts CHANGED
@@ -56,6 +56,8 @@ export declare abstract class BaseClient<TransportFactory extends ClientTranspor
56
56
  protected streamId: number;
57
57
  protected cab: AbortController | null;
58
58
  protected reconnectTimeout: number;
59
+ protected connecting: Promise<void> | null;
60
+ protected state: 'connected' | 'disconnected';
59
61
  constructor(options: BaseClientOptions<RouterContract, SafeCall>, transportFactory: TransportFactory, transportOptions: TransportFactory extends ClientTransportFactory<any, infer U> ? U : never);
60
62
  get auth(): any;
61
63
  set auth(value: any);
package/dist/core.js CHANGED
@@ -29,6 +29,8 @@ export class BaseClient extends EventEmitter {
29
29
  streamId = 0;
30
30
  cab = null;
31
31
  reconnectTimeout = DEFAULT_RECONNECT_TIMEOUT;
32
+ connecting = null;
33
+ state = 'disconnected';
32
34
  #auth;
33
35
  constructor(options, transportFactory, transportOptions) {
34
36
  super();
@@ -41,14 +43,11 @@ export class BaseClient extends EventEmitter {
41
43
  if (this.transport.type === ConnectionType.Bidirectional &&
42
44
  this.options.autoreconnect) {
43
45
  this.on('disconnected', async (reason) => {
44
- if (reason === 'server') {
45
- this.connect();
46
- }
47
- else if (reason === 'error') {
46
+ while (this.state === 'disconnected') {
48
47
  const timeout = new Promise((resolve) => setTimeout(resolve, this.reconnectTimeout));
49
- const connected = new Promise((_, reject) => this.once('connected', reject));
50
48
  this.reconnectTimeout = Math.min(this.reconnectTimeout * 2, DEFAULT_MAX_RECONNECT_TIMEOUT);
51
- await Promise.race([timeout, connected]).then(this.connect.bind(this), noopFn);
49
+ await timeout;
50
+ await this.connect().catch(noopFn);
52
51
  }
53
52
  });
54
53
  this.on('connected', () => {
@@ -56,7 +55,7 @@ export class BaseClient extends EventEmitter {
56
55
  });
57
56
  if (globalThis.window) {
58
57
  globalThis.window.addEventListener('pageshow', () => {
59
- if (!this.cab)
58
+ if (this.state === 'disconnected')
60
59
  this.connect();
61
60
  });
62
61
  }
@@ -68,54 +67,68 @@ export class BaseClient extends EventEmitter {
68
67
  set auth(value) {
69
68
  this.#auth = value;
70
69
  }
71
- async connect() {
72
- if (this.transport.type === ConnectionType.Bidirectional) {
73
- this.cab = new AbortController();
74
- const protocol = this.protocol;
75
- const serverStreams = this.serverStreams;
76
- const transport = {
77
- send: (buffer) => {
78
- this.#send(buffer).catch(noopFn);
79
- },
80
- };
81
- this.messageContext = {
82
- transport,
83
- encoder: this.options.format,
84
- decoder: this.options.format,
85
- addClientStream: (blob) => {
86
- const streamId = this.#getStreamId();
87
- return this.clientStreams.add(blob.source, streamId, blob.metadata);
88
- },
89
- addServerStream(streamId, metadata) {
90
- const stream = new ProtocolServerBlobStream(metadata, {
91
- pull: (controller) => {
92
- transport.send(protocol.encodeMessage(this, ClientMessageType.ServerStreamPull, { streamId, size: 65535 /* 64kb by default */ }));
93
- },
94
- close: () => {
95
- serverStreams.remove(streamId);
96
- },
97
- readableStrategy: { highWaterMark: 0 },
98
- });
99
- serverStreams.add(streamId, stream);
100
- return ({ signal } = {}) => {
101
- if (signal)
102
- signal.addEventListener('abort', () => {
103
- transport.send(protocol.encodeMessage(this, ClientMessageType.ServerStreamAbort, { streamId }));
104
- serverStreams.abort(streamId);
105
- }, { once: true });
106
- return stream;
107
- };
108
- },
109
- streamId: this.#getStreamId.bind(this),
110
- };
111
- return this.transport.connect({
112
- auth: this.auth,
113
- application: this.options.application,
114
- onMessage: this.onMessage.bind(this),
115
- onConnect: this.onConnect.bind(this),
116
- onDisconnect: this.onDisconnect.bind(this),
117
- });
118
- }
70
+ connect() {
71
+ if (this.state === 'connected')
72
+ return Promise.resolve();
73
+ if (this.connecting)
74
+ return this.connecting;
75
+ const _connect = async () => {
76
+ if (this.transport.type === ConnectionType.Bidirectional) {
77
+ this.cab = new AbortController();
78
+ const protocol = this.protocol;
79
+ const serverStreams = this.serverStreams;
80
+ const transport = {
81
+ send: (buffer) => {
82
+ this.#send(buffer).catch(noopFn);
83
+ },
84
+ };
85
+ this.messageContext = {
86
+ transport,
87
+ encoder: this.options.format,
88
+ decoder: this.options.format,
89
+ addClientStream: (blob) => {
90
+ const streamId = this.#getStreamId();
91
+ return this.clientStreams.add(blob.source, streamId, blob.metadata);
92
+ },
93
+ addServerStream(streamId, metadata) {
94
+ const stream = new ProtocolServerBlobStream(metadata, {
95
+ pull: (controller) => {
96
+ transport.send(protocol.encodeMessage(this, ClientMessageType.ServerStreamPull, { streamId, size: 65535 /* 64kb by default */ }));
97
+ },
98
+ close: () => {
99
+ serverStreams.remove(streamId);
100
+ },
101
+ readableStrategy: { highWaterMark: 0 },
102
+ });
103
+ serverStreams.add(streamId, stream);
104
+ return ({ signal } = {}) => {
105
+ if (signal)
106
+ signal.addEventListener('abort', () => {
107
+ transport.send(protocol.encodeMessage(this, ClientMessageType.ServerStreamAbort, { streamId }));
108
+ serverStreams.abort(streamId);
109
+ }, { once: true });
110
+ return stream;
111
+ };
112
+ },
113
+ streamId: this.#getStreamId.bind(this),
114
+ };
115
+ return this.transport.connect({
116
+ auth: this.auth,
117
+ application: this.options.application,
118
+ onMessage: this.onMessage.bind(this),
119
+ onConnect: this.onConnect.bind(this),
120
+ onDisconnect: this.onDisconnect.bind(this),
121
+ });
122
+ }
123
+ };
124
+ this.connecting = _connect()
125
+ .then(() => {
126
+ this.state = 'connected';
127
+ })
128
+ .finally(() => {
129
+ this.connecting = null;
130
+ });
131
+ return this.connecting;
119
132
  }
120
133
  async disconnect() {
121
134
  if (this.transport.type === ConnectionType.Bidirectional) {
@@ -208,9 +221,11 @@ export class BaseClient extends EventEmitter {
208
221
  }
209
222
  }
210
223
  async onConnect() {
224
+ this.state = 'connected';
211
225
  this.emit('connected');
212
226
  }
213
227
  async onDisconnect(reason) {
228
+ this.state = 'disconnected';
214
229
  this.emit('disconnected', reason);
215
230
  this.clientStreams.clear(reason);
216
231
  this.serverStreams.clear(reason);
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,YAAY,EACZ,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,QAAQ,GACT,MAAM,wBAAwB,CAAA;AAS/B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EACL,SAAS,EACT,YAAY,GAEb,MAAM,iBAAiB,CAAA;AAExB,cAAc,YAAY,CAAA;AAE1B,MAAM,OAAO,WAAY,SAAQ,aAAa;CAAG;AAOjD,MAAM,yBAAyB,GAAG,IAAI,CAAA;AACtC,MAAM,6BAA6B,GAAG,KAAK,CAAA;AAe3C;;;GAGG;AACH,MAAM,OAAgB,UASpB,SAAQ,YAGR;IAsCW;IACA;IACA;IAvCX,CAAC,CAOA;IAOS,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAA;IAC7C,SAAS,CAMV;IACC,QAAQ,CAA0B;IAClC,cAAc,CAAwB;IACtC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA;IACnC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA;IACnC,UAAU,GAAG,IAAI,aAAa,EAAE,CAAA;IAChC,MAAM,GAAG,CAAC,CAAA;IACV,QAAQ,GAAG,CAAC,CAAA;IACZ,GAAG,GAA2B,IAAI,CAAA;IAClC,gBAAgB,GAAG,yBAAyB,CAAA;IAC5C,UAAU,GAAyB,IAAI,CAAA;IACvC,KAAK,GAAiC,cAAc,CAAA;IAE9D,KAAK,CAAK;IAEV,YACW,OAAoD,EACpD,gBAAkC,EAClC,gBAKA;QAET,KAAK,EAAE,CAAA;QATE,YAAO,GAAP,OAAO,CAA6C;QACpD,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,qBAAgB,GAAhB,gBAAgB,CAKhB;QAIT,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE1C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAEzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CACpC,EAAE,QAAQ,EAAE,MAAM,EAAE,EACpB,IAAI,CAAC,gBAAgB,CACf,CAAA;QAER,IACE,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa;YACpD,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACvC,OAAO,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;oBACrC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACtC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAC3C,CAAA;oBACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,gBAAgB,GAAG,CAAC,EACzB,6BAA6B,CAC9B,CAAA;oBACD,MAAM,OAAO,CAAA;oBACb,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;gBACxB,IAAI,CAAC,gBAAgB,GAAG,yBAAyB,CAAA;YACnD,CAAC,CAAC,CAAA;YAEF,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;oBAClD,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc;wBAAE,IAAI,CAAC,OAAO,EAAE,CAAA;gBACnD,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,KAAK;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACxD,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAA;QAE3C,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE,CAAC;gBACzD,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,EAAE,CAAA;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;gBACxC,MAAM,SAAS,GAAG;oBAChB,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;wBACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBAClC,CAAC;iBACF,CAAA;gBACD,IAAI,CAAC,cAAc,GAAG;oBACpB,SAAS;oBACT,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC5B,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;wBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;wBACpC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACrE,CAAC;oBACD,eAAe,CAAC,QAAQ,EAAE,QAAQ;wBAChC,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,QAAQ,EAAE;4BACpD,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;gCACnB,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,aAAa,CACpB,IAAI,EACJ,iBAAiB,CAAC,gBAAgB,EAClC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAChD,CACF,CAAA;4BACH,CAAC;4BACD,KAAK,EAAE,GAAG,EAAE;gCACV,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;4BAChC,CAAC;4BACD,gBAAgB,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;yBACvC,CAAC,CAAA;wBACF,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;wBACnC,OAAO,CAAC,EAAE,MAAM,KAA+B,EAAE,EAAE,EAAE;4BACnD,IAAI,MAAM;gCACR,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;oCACH,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,aAAa,CACpB,IAAI,EACJ,iBAAiB,CAAC,iBAAiB,EACnC,EAAE,QAAQ,EAAE,CACb,CACF,CAAA;oCACD,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gCAC/B,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;4BACH,OAAO,MAAM,CAAA;wBACf,CAAC,CAAA;oBACH,CAAC;oBACD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;iBACvC,CAAA;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;oBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;oBACrC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC3C,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAA;QAED,IAAI,CAAC,UAAU,GAAG,QAAQ,EAAE;aACzB,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;QAC1B,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC,CAAC,CAAA;QAEJ,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE,CAAC;YACzD,IAAI,CAAC,GAAI,CAAC,KAAK,EAAE,CAAA;YACjB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACjB,CAAC;IACH,CAAC;IAED,IAAI,CACF,MAAkE,EAClE,QAA+B;QAE/B,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAES,KAAK,CAAC,KAAK,CACnB,SAAiB,EACjB,OAAY,EACZ,UAA6B,EAAE;QAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;QACvD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QAExC,2BAA2B;QAC3B,MAAM,OAAO,GAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAElD,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QACvD,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAEtE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAChC,MAAM,IAAI,GAAG,YAAY,EAAwB,CAAA;QACjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAE5B,uDAAuD;QACvD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACzB,MAAM,KAAK,GAAG,IAAI,aAAa,CAC7B,SAAS,CAAC,kBAAkB,EAC5B,MAAM,CAAC,MAAM,CACd,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;oBACH,IAAI,CAAC,MAAM,CACT,IAAI,aAAa,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAO,CAAC,MAAM,CAAC,CAChE,CAAA;oBACD,IACE,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa;wBACpD,IAAI,CAAC,cAAc,EACnB,CAAC;wBACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAc,EACnB,iBAAiB,CAAC,QAAQ,EAC1B,EAAE,MAAM,EAAE,CACX,CAAA;wBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBAClC,CAAC;gBACH,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;YACH,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBACtE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE,CAAC;oBACzD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAe,EACpB,iBAAiB,CAAC,GAAG,EACrB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,CACnD,CAAA;oBACD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAClC,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CACxC;wBACE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;wBACrC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;wBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB,EACD,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAClD,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CACvD,CAAA;oBACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC9B,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE;oBACpC,UAAU,CAAC,KAAK,EAAE,CAAA;gBACpB,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,OAAO,KAAK,CAAA;QACd,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,MAAM,GAAG,CAAA;QACX,CAAC,CACF,CAAA;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,MAAM,MAAM;iBAChB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;iBAC9B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;iBAC7B,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAES,KAAK,CAAC,SAAS;QACvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;QACxB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACxB,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,MAA2C;QACtE,IAAI,CAAC,KAAK,GAAG,cAAc,CAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;QACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,MAAuB;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAM;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;QAExE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB,CAAC,WAAW;gBAChC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAA;gBACvC,MAAK;YACP,KAAK,iBAAiB,CAAC,iBAAiB;gBACtC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAA;gBAC7C,MAAK;YACP,KAAK,iBAAiB,CAAC,cAAc;gBACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBACnD,MAAK;YACP,KAAK,iBAAiB,CAAC,YAAY;gBACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,iBAAiB,CAAC,cAAc;gBACnC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,iBAAiB,CAAC,gBAAgB;gBACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBACxD,MAAK;YACP,KAAK,iBAAiB,CAAC,eAAe;gBACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACxC,MAAK;YACP,KAAK,iBAAiB,CAAC,iBAAiB;gBACtC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC1C,MAAK;YACP,KAAK,iBAAiB,CAAC,gBAAgB;gBACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,CAAC,KAAK,EAAE,EAAE;oBACR,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAe,EACpB,iBAAiB,CAAC,gBAAgB,EAClC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,CACtC,CAAA;wBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBAClC,CAAC;yBAAM,CAAC;wBACN,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAe,EACpB,iBAAiB,CAAC,eAAe,EACjC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAC/B,CAAA;wBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;wBAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;oBAC1C,CAAC;gBACH,CAAC,EACD,GAAG,EAAE;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAe,EACpB,iBAAiB,CAAC,iBAAiB,EACnC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAC/B,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBAChC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC7C,CAAC,CACF,CAAA;gBACD,MAAK;YACP,KAAK,iBAAiB,CAAC,iBAAiB;gBACtC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC1C,MAAK;QACT,CAAC;IACH,CAAC;IAED,yBAAyB,CACvB,OAAgE;QAEhE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QACvE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;gBACnE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CACT,IAAI,aAAa,CACf,SAAS,CAAC,kBAAkB,EAC5B,2BAA2B,EAC3B,KAAK,CACN,CACF,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,+BAA+B,CAC7B,OAAsE;QAEtE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI;gBAAE,OAAM;YACjB,IAAI,CAAC,MAAM,CACT,IAAI,aAAa,CACf,OAAO,CAAC,KAAK,CAAC,IAAI,EAClB,OAAO,CAAC,KAAK,CAAC,OAAO,EACrB,OAAO,CAAC,KAAK,CAAC,IAAI,CACnB,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;gBAClC,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;oBACzC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;wBACpB,IAAI,MAAM,EAAE,CAAC;4BACX,IAAI,MAAM,CAAC,OAAO;gCAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;;gCAEjD,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;oCACH,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oCAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wCACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;wCACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;wCACjC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4CACxB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAc,EACnB,iBAAiB,CAAC,QAAQ,EAC1B,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAClD,CAAA;4CACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;wCAClC,CAAC;oCACH,CAAC;gCACH,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;wBACL,CAAC;oBACH,CAAC;oBACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;wBACnB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAC5B,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAClC,CAAA;oBACH,CAAC;oBACD,IAAI,EAAE,GAAG,EAAE;wBACT,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAe,EACpB,iBAAiB,CAAC,OAAO,EACzB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC3B,CAAA;wBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBAClC,CAAC;oBACD,gBAAgB,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;iBACvC,CAAC,CAAA;gBACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,+CAA+C;gBAC/C,uDAAuD;gBACvD,gFAAgF;gBAChF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACxC,IAAI,CAAC,cAAc,EACnB,iBAAiB,CAAC,QAAQ,EAC1B,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC3B,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,MAAc,EAAE,QAA4B;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEnC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACnC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC;oBACtC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;wBACnB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAC5B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAClC,CAAA;oBACH,CAAC;iBACF,CAAC,CAAA;gBACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACnC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAA4B,EAAE,EAAE;oBACpD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBACjE,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,+CAA+C;gBAC/C,uDAAuD;gBACvD,qEAAqE;gBACrE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;gBACrC,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAA;gBACrD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAA;gBACnD,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAA4B,EAAE,EAAE;oBACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBACxD,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,uDAAuD;gBACvD,qEAAqE;gBACrE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAM;YACjB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACzC,IAAI,CAAC,SAAS,EACd,QAAQ,CAAC,MAAM,CAChB,CAAA;gBACD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CACT,IAAI,aAAa,CACf,SAAS,CAAC,kBAAkB,EAC5B,2BAA2B,EAC3B,KAAK,CACN,CACF,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAuB,EAAE,MAAoB;QACjD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc;YACvD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;CACF"}
package/package.json CHANGED
@@ -7,17 +7,17 @@
7
7
  "./static": "./dist/clients/static.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@nmtjs/type": "0.15.0-beta.6",
11
- "@nmtjs/protocol": "0.15.0-beta.6",
12
- "@nmtjs/common": "0.15.0-beta.6",
13
- "@nmtjs/contract": "0.15.0-beta.6"
10
+ "@nmtjs/type": "0.15.0-beta.8",
11
+ "@nmtjs/contract": "0.15.0-beta.8",
12
+ "@nmtjs/common": "0.15.0-beta.8",
13
+ "@nmtjs/protocol": "0.15.0-beta.8"
14
14
  },
15
15
  "devDependencies": {
16
- "@nmtjs/_tests": "0.15.0-beta.6",
17
- "@nmtjs/type": "0.15.0-beta.6",
18
- "@nmtjs/common": "0.15.0-beta.6",
19
- "@nmtjs/protocol": "0.15.0-beta.6",
20
- "@nmtjs/contract": "0.15.0-beta.6"
16
+ "@nmtjs/type": "0.15.0-beta.8",
17
+ "@nmtjs/_tests": "0.15.0-beta.8",
18
+ "@nmtjs/contract": "0.15.0-beta.8",
19
+ "@nmtjs/common": "0.15.0-beta.8",
20
+ "@nmtjs/protocol": "0.15.0-beta.8"
21
21
  },
22
22
  "files": [
23
23
  "dist",
@@ -25,7 +25,7 @@
25
25
  "LICENSE.md",
26
26
  "README.md"
27
27
  ],
28
- "version": "0.15.0-beta.6",
28
+ "version": "0.15.0-beta.8",
29
29
  "scripts": {
30
30
  "clean-build": "rm -rf ./dist",
31
31
  "build": "tsc --declaration --sourcemap",
package/src/core.ts CHANGED
@@ -112,6 +112,8 @@ export abstract class BaseClient<
112
112
  protected streamId = 0
113
113
  protected cab: AbortController | null = null
114
114
  protected reconnectTimeout = DEFAULT_RECONNECT_TIMEOUT
115
+ protected connecting: Promise<void> | null = null
116
+ protected state: 'connected' | 'disconnected' = 'disconnected'
115
117
 
116
118
  #auth: any
117
119
 
@@ -141,23 +143,16 @@ export abstract class BaseClient<
141
143
  this.options.autoreconnect
142
144
  ) {
143
145
  this.on('disconnected', async (reason) => {
144
- if (reason === 'server') {
145
- this.connect()
146
- } else if (reason === 'error') {
146
+ while (this.state === 'disconnected') {
147
147
  const timeout = new Promise((resolve) =>
148
148
  setTimeout(resolve, this.reconnectTimeout),
149
149
  )
150
- const connected = new Promise((_, reject) =>
151
- this.once('connected', reject),
152
- )
153
150
  this.reconnectTimeout = Math.min(
154
151
  this.reconnectTimeout * 2,
155
152
  DEFAULT_MAX_RECONNECT_TIMEOUT,
156
153
  )
157
- await Promise.race([timeout, connected]).then(
158
- this.connect.bind(this),
159
- noopFn,
160
- )
154
+ await timeout
155
+ await this.connect().catch(noopFn)
161
156
  }
162
157
  })
163
158
 
@@ -167,7 +162,7 @@ export abstract class BaseClient<
167
162
 
168
163
  if (globalThis.window) {
169
164
  globalThis.window.addEventListener('pageshow', () => {
170
- if (!this.cab) this.connect()
165
+ if (this.state === 'disconnected') this.connect()
171
166
  })
172
167
  }
173
168
  }
@@ -181,71 +176,85 @@ export abstract class BaseClient<
181
176
  this.#auth = value
182
177
  }
183
178
 
184
- async connect() {
185
- if (this.transport.type === ConnectionType.Bidirectional) {
186
- this.cab = new AbortController()
187
- const protocol = this.protocol
188
- const serverStreams = this.serverStreams
189
-
190
- const transport = {
191
- send: (buffer) => {
192
- this.#send(buffer).catch(noopFn)
193
- },
194
- }
195
- this.messageContext = {
196
- transport,
197
- encoder: this.options.format,
198
- decoder: this.options.format,
199
- addClientStream: (blob) => {
200
- const streamId = this.#getStreamId()
201
- return this.clientStreams.add(blob.source, streamId, blob.metadata)
202
- },
203
- addServerStream(streamId, metadata) {
204
- const stream = new ProtocolServerBlobStream(metadata, {
205
- pull: (controller) => {
206
- transport.send(
207
- protocol.encodeMessage(
208
- this,
209
- ClientMessageType.ServerStreamPull,
210
- { streamId, size: 65535 /* 64kb by default */ },
211
- ),
212
- )
213
- },
214
- close: () => {
215
- serverStreams.remove(streamId)
216
- },
217
- readableStrategy: { highWaterMark: 0 },
218
- })
219
- serverStreams.add(streamId, stream)
220
- return ({ signal }: { signal?: AbortSignal } = {}) => {
221
- if (signal)
222
- signal.addEventListener(
223
- 'abort',
224
- () => {
225
- transport.send(
226
- protocol.encodeMessage(
227
- this,
228
- ClientMessageType.ServerStreamAbort,
229
- { streamId },
230
- ),
231
- )
232
- serverStreams.abort(streamId)
233
- },
234
- { once: true },
235
- )
236
- return stream
237
- }
238
- },
239
- streamId: this.#getStreamId.bind(this),
179
+ connect() {
180
+ if (this.state === 'connected') return Promise.resolve()
181
+ if (this.connecting) return this.connecting
182
+
183
+ const _connect = async () => {
184
+ if (this.transport.type === ConnectionType.Bidirectional) {
185
+ this.cab = new AbortController()
186
+ const protocol = this.protocol
187
+ const serverStreams = this.serverStreams
188
+ const transport = {
189
+ send: (buffer) => {
190
+ this.#send(buffer).catch(noopFn)
191
+ },
192
+ }
193
+ this.messageContext = {
194
+ transport,
195
+ encoder: this.options.format,
196
+ decoder: this.options.format,
197
+ addClientStream: (blob) => {
198
+ const streamId = this.#getStreamId()
199
+ return this.clientStreams.add(blob.source, streamId, blob.metadata)
200
+ },
201
+ addServerStream(streamId, metadata) {
202
+ const stream = new ProtocolServerBlobStream(metadata, {
203
+ pull: (controller) => {
204
+ transport.send(
205
+ protocol.encodeMessage(
206
+ this,
207
+ ClientMessageType.ServerStreamPull,
208
+ { streamId, size: 65535 /* 64kb by default */ },
209
+ ),
210
+ )
211
+ },
212
+ close: () => {
213
+ serverStreams.remove(streamId)
214
+ },
215
+ readableStrategy: { highWaterMark: 0 },
216
+ })
217
+ serverStreams.add(streamId, stream)
218
+ return ({ signal }: { signal?: AbortSignal } = {}) => {
219
+ if (signal)
220
+ signal.addEventListener(
221
+ 'abort',
222
+ () => {
223
+ transport.send(
224
+ protocol.encodeMessage(
225
+ this,
226
+ ClientMessageType.ServerStreamAbort,
227
+ { streamId },
228
+ ),
229
+ )
230
+ serverStreams.abort(streamId)
231
+ },
232
+ { once: true },
233
+ )
234
+ return stream
235
+ }
236
+ },
237
+ streamId: this.#getStreamId.bind(this),
238
+ }
239
+ return this.transport.connect({
240
+ auth: this.auth,
241
+ application: this.options.application,
242
+ onMessage: this.onMessage.bind(this),
243
+ onConnect: this.onConnect.bind(this),
244
+ onDisconnect: this.onDisconnect.bind(this),
245
+ })
240
246
  }
241
- return this.transport.connect({
242
- auth: this.auth,
243
- application: this.options.application,
244
- onMessage: this.onMessage.bind(this),
245
- onConnect: this.onConnect.bind(this),
246
- onDisconnect: this.onDisconnect.bind(this),
247
- })
248
247
  }
248
+
249
+ this.connecting = _connect()
250
+ .then(() => {
251
+ this.state = 'connected'
252
+ })
253
+ .finally(() => {
254
+ this.connecting = null
255
+ })
256
+
257
+ return this.connecting
249
258
  }
250
259
 
251
260
  async disconnect() {
@@ -377,10 +386,12 @@ export abstract class BaseClient<
377
386
  }
378
387
 
379
388
  protected async onConnect() {
389
+ this.state = 'connected'
380
390
  this.emit('connected')
381
391
  }
382
392
 
383
393
  protected async onDisconnect(reason: 'client' | 'server' | (string & {})) {
394
+ this.state = 'disconnected'
384
395
  this.emit('disconnected', reason)
385
396
  this.clientStreams.clear(reason)
386
397
  this.serverStreams.clear(reason)