@stomp/stompjs 6.1.2 → 7.0.0-beta2
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/bundles/stomp.umd.js +1724 -2023
- package/bundles/stomp.umd.js.map +1 -1
- package/bundles/stomp.umd.min.js +1 -2
- package/esm6/augment-websocket.d.ts +1 -1
- package/esm6/augment-websocket.js +4 -3
- package/esm6/augment-websocket.js.map +1 -1
- package/esm6/client.d.ts +35 -19
- package/esm6/client.js +176 -132
- package/esm6/client.js.map +1 -1
- package/esm6/compatibility/compat-client.d.ts +29 -23
- package/esm6/compatibility/compat-client.js +2 -2
- package/esm6/compatibility/compat-client.js.map +1 -1
- package/esm6/compatibility/heartbeat-info.d.ts +5 -3
- package/esm6/compatibility/stomp.d.ts +1 -1
- package/esm6/compatibility/stomp.js +2 -2
- package/esm6/compatibility/stomp.js.map +1 -1
- package/esm6/frame-impl.d.ts +5 -5
- package/esm6/frame-impl.js +3 -2
- package/esm6/frame-impl.js.map +1 -1
- package/esm6/i-frame.d.ts +1 -1
- package/esm6/i-frame.js +1 -0
- package/esm6/i-message.d.ts +2 -2
- package/esm6/i-message.js +1 -0
- package/esm6/i-transaction.js +1 -0
- package/esm6/index.d.ts +13 -13
- package/esm6/index.js +13 -10
- package/esm6/index.js.map +1 -1
- package/esm6/parser.d.ts +1 -1
- package/esm6/parser.js +10 -2
- package/esm6/parser.js.map +1 -1
- package/esm6/stomp-config.d.ts +3 -3
- package/esm6/stomp-handler.d.ts +10 -13
- package/esm6/stomp-handler.js +35 -17
- package/esm6/stomp-handler.js.map +1 -1
- package/esm6/stomp-subscription.d.ts +2 -2
- package/esm6/stomp-subscription.js +1 -7
- package/esm6/stomp-subscription.js.map +1 -1
- package/esm6/types.d.ts +31 -5
- package/esm6/types.js +2 -2
- package/esm6/types.js.map +1 -1
- package/esm6/versions.js +2 -2
- package/index.d.ts +1 -1
- package/package.json +28 -25
- package/src/augment-websocket.ts +5 -4
- package/src/client.ts +81 -35
- package/src/compatibility/compat-client.ts +4 -4
- package/src/compatibility/heartbeat-info.ts +1 -1
- package/src/compatibility/stomp.ts +3 -3
- package/src/frame-impl.ts +14 -10
- package/src/i-frame.ts +1 -1
- package/src/i-message.ts +2 -2
- package/src/index.ts +13 -13
- package/src/parser.ts +18 -6
- package/src/stomp-config.ts +3 -3
- package/src/stomp-handler.ts +47 -31
- package/src/stomp-subscription.ts +4 -4
- package/src/types.ts +32 -5
- package/src/versions.ts +2 -2
- package/bundles/stomp.umd.min.js.map +0 -1
package/esm6/client.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ITransaction } from './i-transaction';
|
|
2
|
-
import { StompConfig } from './stomp-config';
|
|
3
|
-
import { StompHeaders } from './stomp-headers';
|
|
4
|
-
import { StompSubscription } from './stomp-subscription';
|
|
5
|
-
import { ActivationState, closeEventCallbackType, debugFnType, frameCallbackType, IPublishParams, IStompSocket, messageCallbackType, wsErrorCallbackType } from './types';
|
|
6
|
-
import { Versions } from './versions';
|
|
1
|
+
import { ITransaction } from './i-transaction.js';
|
|
2
|
+
import { StompConfig } from './stomp-config.js';
|
|
3
|
+
import { StompHeaders } from './stomp-headers.js';
|
|
4
|
+
import { StompSubscription } from './stomp-subscription.js';
|
|
5
|
+
import { ActivationState, closeEventCallbackType, debugFnType, frameCallbackType, IPublishParams, IStompSocket, messageCallbackType, wsErrorCallbackType } from './types.js';
|
|
6
|
+
import { Versions } from './versions.js';
|
|
7
7
|
/**
|
|
8
8
|
* STOMP Client Class.
|
|
9
9
|
*
|
|
@@ -20,7 +20,7 @@ export declare class Client {
|
|
|
20
20
|
* If your environment does not support WebSockets natively, please refer to
|
|
21
21
|
* [Polyfills]{@link https://stomp-js.github.io/guide/stompjs/rx-stomp/ng2-stompjs/pollyfils-for-stompjs-v5.html}.
|
|
22
22
|
*/
|
|
23
|
-
brokerURL: string;
|
|
23
|
+
brokerURL: string | undefined;
|
|
24
24
|
/**
|
|
25
25
|
* STOMP versions to attempt during STOMP handshake. By default versions `1.0`, `1.1`, and `1.2` are attempted.
|
|
26
26
|
*
|
|
@@ -52,7 +52,7 @@ export declare class Client {
|
|
|
52
52
|
* };
|
|
53
53
|
* ```
|
|
54
54
|
*/
|
|
55
|
-
webSocketFactory: () => IStompSocket;
|
|
55
|
+
webSocketFactory: (() => IStompSocket) | undefined;
|
|
56
56
|
/**
|
|
57
57
|
* Will retry if Stomp connection is not established in specified milliseconds.
|
|
58
58
|
* Default 0, which implies wait for ever.
|
|
@@ -113,7 +113,7 @@ export declare class Client {
|
|
|
113
113
|
/**
|
|
114
114
|
* Underlying WebSocket instance, READONLY.
|
|
115
115
|
*/
|
|
116
|
-
|
|
116
|
+
get webSocket(): IStompSocket | undefined;
|
|
117
117
|
/**
|
|
118
118
|
* Connection headers, important keys - `login`, `passcode`, `host`.
|
|
119
119
|
* Though STOMP 1.2 standard marks these keys to be present, check your broker documentation for
|
|
@@ -123,7 +123,8 @@ export declare class Client {
|
|
|
123
123
|
/**
|
|
124
124
|
* Disconnection headers.
|
|
125
125
|
*/
|
|
126
|
-
disconnectHeaders: StompHeaders;
|
|
126
|
+
get disconnectHeaders(): StompHeaders;
|
|
127
|
+
set disconnectHeaders(value: StompHeaders);
|
|
127
128
|
private _disconnectHeaders;
|
|
128
129
|
/**
|
|
129
130
|
* This function will be called for any unhandled messages.
|
|
@@ -153,7 +154,7 @@ export declare class Client {
|
|
|
153
154
|
/**
|
|
154
155
|
* `true` if there is a active connection with STOMP Broker
|
|
155
156
|
*/
|
|
156
|
-
|
|
157
|
+
get connected(): boolean;
|
|
157
158
|
/**
|
|
158
159
|
* Callback, invoked on before a connection connection to the STOMP broker.
|
|
159
160
|
*
|
|
@@ -242,12 +243,12 @@ export declare class Client {
|
|
|
242
243
|
/**
|
|
243
244
|
* version of STOMP protocol negotiated with the server, READONLY
|
|
244
245
|
*/
|
|
245
|
-
|
|
246
|
+
get connectedVersion(): string | undefined;
|
|
246
247
|
private _stompHandler;
|
|
247
248
|
/**
|
|
248
249
|
* if the client is active (connected or going to reconnect)
|
|
249
250
|
*/
|
|
250
|
-
|
|
251
|
+
get active(): boolean;
|
|
251
252
|
/**
|
|
252
253
|
* It will be called on state change.
|
|
253
254
|
*
|
|
@@ -255,7 +256,6 @@ export declare class Client {
|
|
|
255
256
|
*/
|
|
256
257
|
onChangeState: (state: ActivationState) => void;
|
|
257
258
|
private _changeState;
|
|
258
|
-
private _resolveSocketClose;
|
|
259
259
|
/**
|
|
260
260
|
* Activation state.
|
|
261
261
|
*
|
|
@@ -285,14 +285,29 @@ export declare class Client {
|
|
|
285
285
|
private _schedule_reconnect;
|
|
286
286
|
/**
|
|
287
287
|
* Disconnect if connected and stop auto reconnect loop.
|
|
288
|
-
* Appropriate callbacks will be invoked if underlying STOMP connection
|
|
288
|
+
* Appropriate callbacks will be invoked if there is an underlying STOMP connection.
|
|
289
289
|
*
|
|
290
|
-
* This call is async
|
|
291
|
-
* otherwise, it will resolve after underlying websocket is properly disposed.
|
|
290
|
+
* This call is async. It will resolve immediately if there is no underlying active websocket,
|
|
291
|
+
* otherwise, it will resolve after the underlying websocket is properly disposed of.
|
|
292
292
|
*
|
|
293
|
-
*
|
|
293
|
+
* It is not an error to invoke this method more than once.
|
|
294
|
+
* Each of those would resolve on completion of deactivation.
|
|
295
|
+
*
|
|
296
|
+
* To reactivate, you can call [Client#activate]{@link Client#activate}.
|
|
297
|
+
*
|
|
298
|
+
* Experimental: pass `force: true` to immediately discard the underlying connection.
|
|
299
|
+
* This mode will skip both the STOMP and the Websocket shutdown sequences.
|
|
300
|
+
* In some cases, browsers take a long time in the Websocket shutdown if the underlying connection had gone stale.
|
|
301
|
+
* Using this mode can speed up.
|
|
302
|
+
* When this mode is used, the actual Websocket may linger for a while
|
|
303
|
+
* and the broker may not realize that the connection is no longer in use.
|
|
304
|
+
*
|
|
305
|
+
* It is possible to invoke this method initially without the `force` option
|
|
306
|
+
* and subsequently, say after a wait, with the `force` option.
|
|
294
307
|
*/
|
|
295
|
-
deactivate(
|
|
308
|
+
deactivate(options?: {
|
|
309
|
+
force?: boolean;
|
|
310
|
+
}): Promise<void>;
|
|
296
311
|
/**
|
|
297
312
|
* Force disconnect if there is an active connection by directly closing the underlying WebSocket.
|
|
298
313
|
* This is different than a normal disconnect where a DISCONNECT sequence is carried out with the broker.
|
|
@@ -338,6 +353,7 @@ export declare class Client {
|
|
|
338
353
|
* ```
|
|
339
354
|
*/
|
|
340
355
|
publish(params: IPublishParams): void;
|
|
356
|
+
private _checkConnection;
|
|
341
357
|
/**
|
|
342
358
|
* STOMP brokers may carry out operation asynchronously and allow requesting for acknowledgement.
|
|
343
359
|
* To request an acknowledgement, a `receipt` header needs to be sent with the actual request.
|
package/esm6/client.js
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { StompHandler } from './stomp-handler';
|
|
11
|
-
import { ActivationState, StompSocketState, } from './types';
|
|
12
|
-
import { Versions } from './versions';
|
|
1
|
+
import { StompHandler } from './stomp-handler.js';
|
|
2
|
+
import { ActivationState, StompSocketState, } from './types.js';
|
|
3
|
+
import { Versions } from './versions.js';
|
|
13
4
|
/**
|
|
14
5
|
* STOMP Client Class.
|
|
15
6
|
*
|
|
@@ -86,6 +77,13 @@ export class Client {
|
|
|
86
77
|
* This is not an ideal solution, but a stop gap until the underlying issue is fixed at ReactNative library.
|
|
87
78
|
*/
|
|
88
79
|
this.appendMissingNULLonIncoming = false;
|
|
80
|
+
/**
|
|
81
|
+
* Browsers do not immediately close WebSockets when `.close` is issued.
|
|
82
|
+
* This may cause reconnection to take a longer on certain type of failures.
|
|
83
|
+
* In case of incoming heartbeat failure, this experimental flag instructs the library
|
|
84
|
+
* to discard the socket immediately (even before it is actually closed).
|
|
85
|
+
*/
|
|
86
|
+
this.discardWebsocketOnCommFailure = false;
|
|
89
87
|
/**
|
|
90
88
|
* Activation state.
|
|
91
89
|
*
|
|
@@ -117,7 +115,7 @@ export class Client {
|
|
|
117
115
|
* Underlying WebSocket instance, READONLY.
|
|
118
116
|
*/
|
|
119
117
|
get webSocket() {
|
|
120
|
-
return this._stompHandler
|
|
118
|
+
return this._stompHandler?._webSocket;
|
|
121
119
|
}
|
|
122
120
|
/**
|
|
123
121
|
* Disconnection headers.
|
|
@@ -179,107 +177,106 @@ export class Client {
|
|
|
179
177
|
this._changeState(ActivationState.ACTIVE);
|
|
180
178
|
this._connect();
|
|
181
179
|
}
|
|
182
|
-
_connect() {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
180
|
+
async _connect() {
|
|
181
|
+
if (this.connected) {
|
|
182
|
+
this.debug('STOMP: already connected, nothing to do');
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
await this.beforeConnect();
|
|
186
|
+
if (!this.active) {
|
|
187
|
+
this.debug('Client has been marked inactive, will not attempt to connect');
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// setup connection watcher
|
|
191
|
+
if (this.connectionTimeout > 0) {
|
|
192
|
+
// clear first
|
|
193
|
+
if (this._connectionWatcher) {
|
|
194
|
+
clearTimeout(this._connectionWatcher);
|
|
192
195
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
this._connectionWatcher = setTimeout(() => {
|
|
197
|
+
if (this.connected) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Connection not established, close the underlying socket
|
|
201
|
+
// a reconnection will be attempted
|
|
202
|
+
this.debug(`Connection not established in ${this.connectionTimeout}ms, closing socket`);
|
|
203
|
+
this.forceDisconnect();
|
|
204
|
+
}, this.connectionTimeout);
|
|
205
|
+
}
|
|
206
|
+
this.debug('Opening Web Socket...');
|
|
207
|
+
// Get the actual WebSocket (or a similar object)
|
|
208
|
+
const webSocket = this._createWebSocket();
|
|
209
|
+
this._stompHandler = new StompHandler(this, webSocket, {
|
|
210
|
+
debug: this.debug,
|
|
211
|
+
stompVersions: this.stompVersions,
|
|
212
|
+
connectHeaders: this.connectHeaders,
|
|
213
|
+
disconnectHeaders: this._disconnectHeaders,
|
|
214
|
+
heartbeatIncoming: this.heartbeatIncoming,
|
|
215
|
+
heartbeatOutgoing: this.heartbeatOutgoing,
|
|
216
|
+
splitLargeFrames: this.splitLargeFrames,
|
|
217
|
+
maxWebSocketChunkSize: this.maxWebSocketChunkSize,
|
|
218
|
+
forceBinaryWSFrames: this.forceBinaryWSFrames,
|
|
219
|
+
logRawCommunication: this.logRawCommunication,
|
|
220
|
+
appendMissingNULLonIncoming: this.appendMissingNULLonIncoming,
|
|
221
|
+
discardWebsocketOnCommFailure: this.discardWebsocketOnCommFailure,
|
|
222
|
+
onConnect: frame => {
|
|
223
|
+
// Successfully connected, stop the connection watcher
|
|
196
224
|
if (this._connectionWatcher) {
|
|
197
225
|
clearTimeout(this._connectionWatcher);
|
|
226
|
+
this._connectionWatcher = undefined;
|
|
198
227
|
}
|
|
199
|
-
this.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
},
|
|
238
|
-
onDisconnect: frame => {
|
|
239
|
-
this.onDisconnect(frame);
|
|
240
|
-
},
|
|
241
|
-
onStompError: frame => {
|
|
242
|
-
this.onStompError(frame);
|
|
243
|
-
},
|
|
244
|
-
onWebSocketClose: evt => {
|
|
245
|
-
this._stompHandler = undefined; // a new one will be created in case of a reconnect
|
|
246
|
-
if (this.state === ActivationState.DEACTIVATING) {
|
|
247
|
-
// Mark deactivation complete
|
|
248
|
-
this._resolveSocketClose();
|
|
249
|
-
this._resolveSocketClose = undefined;
|
|
250
|
-
this._changeState(ActivationState.INACTIVE);
|
|
251
|
-
}
|
|
252
|
-
this.onWebSocketClose(evt);
|
|
253
|
-
// The callback is called before attempting to reconnect, this would allow the client
|
|
254
|
-
// to be `deactivated` in the callback.
|
|
255
|
-
if (this.active) {
|
|
256
|
-
this._schedule_reconnect();
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
onWebSocketError: evt => {
|
|
260
|
-
this.onWebSocketError(evt);
|
|
261
|
-
},
|
|
262
|
-
onUnhandledMessage: message => {
|
|
263
|
-
this.onUnhandledMessage(message);
|
|
264
|
-
},
|
|
265
|
-
onUnhandledReceipt: frame => {
|
|
266
|
-
this.onUnhandledReceipt(frame);
|
|
267
|
-
},
|
|
268
|
-
onUnhandledFrame: frame => {
|
|
269
|
-
this.onUnhandledFrame(frame);
|
|
270
|
-
},
|
|
271
|
-
});
|
|
272
|
-
this._stompHandler.start();
|
|
228
|
+
if (!this.active) {
|
|
229
|
+
this.debug('STOMP got connected while deactivate was issued, will disconnect now');
|
|
230
|
+
this._disposeStompHandler();
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
this.onConnect(frame);
|
|
234
|
+
},
|
|
235
|
+
onDisconnect: frame => {
|
|
236
|
+
this.onDisconnect(frame);
|
|
237
|
+
},
|
|
238
|
+
onStompError: frame => {
|
|
239
|
+
this.onStompError(frame);
|
|
240
|
+
},
|
|
241
|
+
onWebSocketClose: evt => {
|
|
242
|
+
this._stompHandler = undefined; // a new one will be created in case of a reconnect
|
|
243
|
+
if (this.state === ActivationState.DEACTIVATING) {
|
|
244
|
+
// Mark deactivation complete
|
|
245
|
+
this._changeState(ActivationState.INACTIVE);
|
|
246
|
+
}
|
|
247
|
+
// The callback is called before attempting to reconnect, this would allow the client
|
|
248
|
+
// to be `deactivated` in the callback.
|
|
249
|
+
this.onWebSocketClose(evt);
|
|
250
|
+
if (this.active) {
|
|
251
|
+
this._schedule_reconnect();
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
onWebSocketError: evt => {
|
|
255
|
+
this.onWebSocketError(evt);
|
|
256
|
+
},
|
|
257
|
+
onUnhandledMessage: message => {
|
|
258
|
+
this.onUnhandledMessage(message);
|
|
259
|
+
},
|
|
260
|
+
onUnhandledReceipt: frame => {
|
|
261
|
+
this.onUnhandledReceipt(frame);
|
|
262
|
+
},
|
|
263
|
+
onUnhandledFrame: frame => {
|
|
264
|
+
this.onUnhandledFrame(frame);
|
|
265
|
+
},
|
|
273
266
|
});
|
|
267
|
+
this._stompHandler.start();
|
|
274
268
|
}
|
|
275
269
|
_createWebSocket() {
|
|
276
270
|
let webSocket;
|
|
277
271
|
if (this.webSocketFactory) {
|
|
278
272
|
webSocket = this.webSocketFactory();
|
|
279
273
|
}
|
|
280
|
-
else {
|
|
274
|
+
else if (this.brokerURL) {
|
|
281
275
|
webSocket = new WebSocket(this.brokerURL, this.stompVersions.protocolVersions());
|
|
282
276
|
}
|
|
277
|
+
else {
|
|
278
|
+
throw new Error('Either brokerURL or webSocketFactory must be provided');
|
|
279
|
+
}
|
|
283
280
|
webSocket.binaryType = 'arraybuffer';
|
|
284
281
|
return webSocket;
|
|
285
282
|
}
|
|
@@ -293,40 +290,65 @@ export class Client {
|
|
|
293
290
|
}
|
|
294
291
|
/**
|
|
295
292
|
* Disconnect if connected and stop auto reconnect loop.
|
|
296
|
-
* Appropriate callbacks will be invoked if underlying STOMP connection
|
|
293
|
+
* Appropriate callbacks will be invoked if there is an underlying STOMP connection.
|
|
294
|
+
*
|
|
295
|
+
* This call is async. It will resolve immediately if there is no underlying active websocket,
|
|
296
|
+
* otherwise, it will resolve after the underlying websocket is properly disposed of.
|
|
297
297
|
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
298
|
+
* It is not an error to invoke this method more than once.
|
|
299
|
+
* Each of those would resolve on completion of deactivation.
|
|
300
300
|
*
|
|
301
|
-
* To reactivate you can call [Client#activate]{@link Client#activate}.
|
|
301
|
+
* To reactivate, you can call [Client#activate]{@link Client#activate}.
|
|
302
|
+
*
|
|
303
|
+
* Experimental: pass `force: true` to immediately discard the underlying connection.
|
|
304
|
+
* This mode will skip both the STOMP and the Websocket shutdown sequences.
|
|
305
|
+
* In some cases, browsers take a long time in the Websocket shutdown if the underlying connection had gone stale.
|
|
306
|
+
* Using this mode can speed up.
|
|
307
|
+
* When this mode is used, the actual Websocket may linger for a while
|
|
308
|
+
* and the broker may not realize that the connection is no longer in use.
|
|
309
|
+
*
|
|
310
|
+
* It is possible to invoke this method initially without the `force` option
|
|
311
|
+
* and subsequently, say after a wait, with the `force` option.
|
|
302
312
|
*/
|
|
303
|
-
deactivate() {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
//
|
|
324
|
-
this.
|
|
325
|
-
|
|
326
|
-
|
|
313
|
+
async deactivate(options = {}) {
|
|
314
|
+
const force = options.force || false;
|
|
315
|
+
const needToDispose = this.active;
|
|
316
|
+
let retPromise;
|
|
317
|
+
if (this.state === ActivationState.INACTIVE) {
|
|
318
|
+
this.debug(`Already INACTIVE, nothing more to do`);
|
|
319
|
+
return Promise.resolve();
|
|
320
|
+
}
|
|
321
|
+
this._changeState(ActivationState.DEACTIVATING);
|
|
322
|
+
// Clear if a reconnection was scheduled
|
|
323
|
+
if (this._reconnector) {
|
|
324
|
+
clearTimeout(this._reconnector);
|
|
325
|
+
this._reconnector = undefined;
|
|
326
|
+
}
|
|
327
|
+
if (this._stompHandler &&
|
|
328
|
+
// @ts-ignore - if there is a _stompHandler, there is the webSocket
|
|
329
|
+
this.webSocket.readyState !== StompSocketState.CLOSED) {
|
|
330
|
+
const origOnWebSocketClose = this._stompHandler.onWebSocketClose;
|
|
331
|
+
// we need to wait for the underlying websocket to close
|
|
332
|
+
retPromise = new Promise((resolve, reject) => {
|
|
333
|
+
// @ts-ignore - there is a _stompHandler
|
|
334
|
+
this._stompHandler.onWebSocketClose = evt => {
|
|
335
|
+
origOnWebSocketClose(evt);
|
|
336
|
+
resolve();
|
|
337
|
+
};
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
// indicate that auto reconnect loop should terminate
|
|
342
|
+
this._changeState(ActivationState.INACTIVE);
|
|
343
|
+
return Promise.resolve();
|
|
344
|
+
}
|
|
345
|
+
if (force) {
|
|
346
|
+
this._stompHandler?.discardWebsocket();
|
|
347
|
+
}
|
|
348
|
+
else if (needToDispose) {
|
|
327
349
|
this._disposeStompHandler();
|
|
328
|
-
|
|
329
|
-
|
|
350
|
+
}
|
|
351
|
+
return retPromise;
|
|
330
352
|
}
|
|
331
353
|
/**
|
|
332
354
|
* Force disconnect if there is an active connection by directly closing the underlying WebSocket.
|
|
@@ -343,7 +365,6 @@ export class Client {
|
|
|
343
365
|
// Dispose STOMP Handler
|
|
344
366
|
if (this._stompHandler) {
|
|
345
367
|
this._stompHandler.dispose();
|
|
346
|
-
this._stompHandler = null;
|
|
347
368
|
}
|
|
348
369
|
}
|
|
349
370
|
/**
|
|
@@ -383,8 +404,15 @@ export class Client {
|
|
|
383
404
|
* ```
|
|
384
405
|
*/
|
|
385
406
|
publish(params) {
|
|
407
|
+
this._checkConnection();
|
|
408
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
386
409
|
this._stompHandler.publish(params);
|
|
387
410
|
}
|
|
411
|
+
_checkConnection() {
|
|
412
|
+
if (!this.connected) {
|
|
413
|
+
throw new TypeError('There is no underlying STOMP connection');
|
|
414
|
+
}
|
|
415
|
+
}
|
|
388
416
|
/**
|
|
389
417
|
* STOMP brokers may carry out operation asynchronously and allow requesting for acknowledgement.
|
|
390
418
|
* To request an acknowledgement, a `receipt` header needs to be sent with the actual request.
|
|
@@ -421,6 +449,8 @@ export class Client {
|
|
|
421
449
|
* ```
|
|
422
450
|
*/
|
|
423
451
|
watchForReceipt(receiptId, callback) {
|
|
452
|
+
this._checkConnection();
|
|
453
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
424
454
|
this._stompHandler.watchForReceipt(receiptId, callback);
|
|
425
455
|
}
|
|
426
456
|
/**
|
|
@@ -448,6 +478,8 @@ export class Client {
|
|
|
448
478
|
* ```
|
|
449
479
|
*/
|
|
450
480
|
subscribe(destination, callback, headers = {}) {
|
|
481
|
+
this._checkConnection();
|
|
482
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
451
483
|
return this._stompHandler.subscribe(destination, callback, headers);
|
|
452
484
|
}
|
|
453
485
|
/**
|
|
@@ -463,6 +495,8 @@ export class Client {
|
|
|
463
495
|
* See: http://stomp.github.com/stomp-specification-1.2.html#UNSUBSCRIBE UNSUBSCRIBE Frame
|
|
464
496
|
*/
|
|
465
497
|
unsubscribe(id, headers = {}) {
|
|
498
|
+
this._checkConnection();
|
|
499
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
466
500
|
this._stompHandler.unsubscribe(id, headers);
|
|
467
501
|
}
|
|
468
502
|
/**
|
|
@@ -472,6 +506,8 @@ export class Client {
|
|
|
472
506
|
* `transactionId` is optional, if not passed the library will generate it internally.
|
|
473
507
|
*/
|
|
474
508
|
begin(transactionId) {
|
|
509
|
+
this._checkConnection();
|
|
510
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
475
511
|
return this._stompHandler.begin(transactionId);
|
|
476
512
|
}
|
|
477
513
|
/**
|
|
@@ -487,6 +523,8 @@ export class Client {
|
|
|
487
523
|
* ```
|
|
488
524
|
*/
|
|
489
525
|
commit(transactionId) {
|
|
526
|
+
this._checkConnection();
|
|
527
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
490
528
|
this._stompHandler.commit(transactionId);
|
|
491
529
|
}
|
|
492
530
|
/**
|
|
@@ -501,6 +539,8 @@ export class Client {
|
|
|
501
539
|
* ```
|
|
502
540
|
*/
|
|
503
541
|
abort(transactionId) {
|
|
542
|
+
this._checkConnection();
|
|
543
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
504
544
|
this._stompHandler.abort(transactionId);
|
|
505
545
|
}
|
|
506
546
|
/**
|
|
@@ -517,6 +557,8 @@ export class Client {
|
|
|
517
557
|
* ```
|
|
518
558
|
*/
|
|
519
559
|
ack(messageId, subscriptionId, headers = {}) {
|
|
560
|
+
this._checkConnection();
|
|
561
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
520
562
|
this._stompHandler.ack(messageId, subscriptionId, headers);
|
|
521
563
|
}
|
|
522
564
|
/**
|
|
@@ -533,6 +575,8 @@ export class Client {
|
|
|
533
575
|
* ```
|
|
534
576
|
*/
|
|
535
577
|
nack(messageId, subscriptionId, headers = {}) {
|
|
578
|
+
this._checkConnection();
|
|
579
|
+
// @ts-ignore - we already checked that there is a _stompHandler, and it is connected
|
|
536
580
|
this._stompHandler.nack(messageId, subscriptionId, headers);
|
|
537
581
|
}
|
|
538
582
|
}
|
package/esm6/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|