centrifuge 3.0.1 → 3.1.1

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/README.md CHANGED
@@ -1,24 +1,25 @@
1
- # Centrifuge and Centrifugo bidirectional SDK for NodeJS, React-Native and browser
2
-
3
1
  This SDK provides a client to connect to [Centrifugo](https://github.com/centrifugal/centrifugo) or any [Centrifuge-based](https://github.com/centrifugal/centrifuge) server using pure WebSocket or one of the fallback transports from web browser, ReactNative, or NodeJS environments.
4
2
 
5
3
  The client behaves according to a common [Centrifigo SDK spec](https://centrifugal.dev/docs/transports/client_api). It's recommended to read that before starting to work with this SDK as the spec covers common SDK behavior - describes client and subscription state transitions, main options and methods. Then proceed with this readme for more specifics about `centrifuge-js`.
6
4
 
7
5
  The features implemented by this SDK can be found in [SDK feature matrix](https://centrifugal.dev/docs/transports/client_sdk#sdk-feature-matrix).
8
6
 
7
+ > **`centrifuge-js` v3.x is compatible only with latest [Centrifugo](https://github.com/centrifugal/centrifugo) server (v4) and [Centrifuge](https://github.com/centrifugal/centrifuge) >= 0.25.0. For Centrifugo v2, Centrifugo v3 and Centrifuge < 0.25.0 you should use `centrifuge-js` v2.x.**
8
+
9
9
  * [Install](#install)
10
10
  * [Quick start](#quick-start)
11
- * [WebSocket transport](#websocket-transport)
12
- * [Using fallbacks](#using-fallbacks)
13
- * [Bidirectional emulation](#bidirectional-emulation)
14
- * [SockJS](#using-sockjs)
15
- * [WebTransport (experimental)](#webtransport-experimental)
11
+ * [Supported real-time transports](#supported-real-time-transports)
12
+ * [WebSocket transport](#websocket-transport)
13
+ * [HTTP-based WebSocket fallbacks](#http-based-websocket-fallbacks)
14
+ * [Using SockJS](#using-sockjs)
15
+ * [WebTransport (experimental)](#webtransport-experimental)
16
16
  * [Client API](#client-api)
17
17
  * [Client methods and events](#client-methods-and-events)
18
18
  * [Connection token](#connection-token)
19
19
  * [Subscription API](#subscription-api)
20
- * [Subscription methods and events](#client-methods-and-events)
20
+ * [Subscription methods and events](#subscription-methods-and-events)
21
21
  * [Subscription token](#subscription-token)
22
+ * [Subscription management API](#subscription-management-api)
22
23
  * [Message batching](#message-batching)
23
24
  * [Server-side subscriptions](#server-side-subscriptions)
24
25
  * [Configuration options](#configuration-options)
@@ -28,27 +29,27 @@ The features implemented by this SDK can be found in [SDK feature matrix](https:
28
29
 
29
30
  ## Install
30
31
 
31
- Using CDN (replace `3.0.0` to a concrete version number):
32
-
33
- ```html
34
- <script src="https://unpkg.com/centrifuge@3.0.0/dist/centrifuge.js"></script>
35
- ```
36
-
37
- It's also [available on cdnjs](https://cdnjs.com/libraries/centrifuge).
38
-
39
- You can install this SDK via `npm`:
32
+ SDK can be installed via `npm`:
40
33
 
41
34
  ```bash
42
35
  npm install centrifuge
43
36
  ```
44
37
 
45
- And then:
38
+ And then in your project:
46
39
 
47
40
  ```javascript
48
41
  import { Centrifuge } from 'centrifuge';
49
42
  ```
50
43
 
51
- By default, library works with JSON only, see [Protobuf support](#protobuf-support) section to see how to import client with Protobuf support.
44
+ In browser, you can import SDK from CDN (replace `3.1.0` to a concrete version number you want to use, see [releases](https://github.com/centrifugal/centrifuge-js/releases)):
45
+
46
+ ```html
47
+ <script src="https://unpkg.com/centrifuge@3.1.0/dist/centrifuge.js"></script>
48
+ ```
49
+
50
+ See also [centrifuge-js on cdnjs](https://cdnjs.com/libraries/centrifuge). Note that `centrifuge-js` browser builds target [ES6](https://caniuse.com/es6) at this point.
51
+
52
+ **By default, library works with JSON only**, if you want to send binary payloads go to [Protobuf support](#protobuf-support) section to see how to import client with Protobuf support.
52
53
 
53
54
  ## Quick start
54
55
 
@@ -77,24 +78,30 @@ Note, that we explicitly call `.connect()` method to initiate connection establi
77
78
 
78
79
  **`Centrifuge` object and `Subscription` object are both instances of [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter).** Below we will describe events that can be exposed in detail.
79
80
 
80
- ## Websocket transport
81
+ ## Supported real-time transports
81
82
 
82
- WebSocket is the main protocol used by `centrifuge-js` to communicate with a server. In browser environment it's available globally, but if you want to connect from NodeJS env – then you need to provide WebSocket constructor to `centrifuge-js` explicitly. [See below](#using-with-nodejs) more information about this.
83
+ This SDK supports several real-time transports.
83
84
 
84
- ## Using fallbacks
85
+ ### Websocket transport
85
86
 
86
- In the quick start example above we used WebSocket endpoint to configure Centrifuge. WebSocket is the main transport it's bidirectional out of the box.
87
+ WebSocket is the main protocol used by `centrifuge-js` to communicate with a server.
87
88
 
88
- In some cases though, WebSocket connection may not be established (for example, due to corporate firewalls and proxies). For such situations `centrifuge-js` offers several WebSocket fallback options.
89
+ In a browser environment WebSocket is available globally, but if you want to connect from NodeJS env then you need to provide WebSocket constructor to `centrifuge-js` explicitly. [See below](#using-with-nodejs) more information about this.
89
90
 
90
- ### Bidirectional emulation
91
+ It's the only transport for which you can just use a string endpoint as first argument of `Centrifuge` constructor. If you need to use other transports, or several transports – then you should use `Array<TransportEndpoint>`.
91
92
 
92
- SockJS is robust and stable product, but it's an extra dependency, it's pretty old, comes with some overhead and sticky sessions requirement for a distributed backend case. In most scenarios these days clients are fine to use WebSocket protocol for messaging. There are rare connection issues though which are caused by corporate firewall and proxy software. To deal with users behind such proxies Centrifuge SDK offers its own bidirectional emulation layer. This layer uses two HTTP-based transports:
93
+ ### HTTP-based WebSocket fallbacks
93
94
 
94
- * HTTP-streaming based on ReadableStream API
95
- * SSE (EventSource).
95
+ In the quick start example above we used WebSocket endpoint to configure Centrifuge. WebSocket is the main transport – it's bidirectional out of the box.
96
96
 
97
- Bidirectional emulation must be first enabled on a server-side. For example, see Centrifugo docs to find out how. Then in Javascript you can slightly change client initialization and point it to a list of endpoints and transports you want to use:
97
+ In some cases though, WebSocket connection may not be established (for example, due to corporate firewalls and proxies). For such situations `centrifuge-js` offers several WebSocket fallback options based on HTTP:
98
+
99
+ * HTTP-streaming based on [ReadableStream API](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)
100
+ * [SSE (EventSource)](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
101
+
102
+ These two transports use Centrifugo/Centrifuge own bidirectional emulation layer. See [more details in introduction post](https://centrifugal.dev/blog/2022/07/19/centrifugo-v4-released#modern-websocket-emulation-in-javascript). Bidirectional emulation must be first enabled on a server-side. See [Centrifugo docs](https://centrifugal.dev/docs/transports/overview) to find out how.
103
+
104
+ After enabling HTTP-streaming or SSE endpoints on a server side you can slightly change client initialization and point Javascript SDK to a list of endpoints and transports you want to use:
98
105
 
99
106
  ```javascript
100
107
  const transports = [
@@ -115,14 +122,14 @@ const centrifuge = new Centrifuge(transports);
115
122
  centrifuge.connect()
116
123
  ```
117
124
 
118
- In this case, client will try transports in order, one by one, during the initial handshake. Until success. Then will only use a successful transport during reconnects.
125
+ In this case, client will try transports in order, one by one, during the initial handshake. Until success. Then will only use a successfully chosen transport during reconnects.
119
126
 
120
127
  Supported transports are:
121
128
 
122
129
  * `websocket`
123
130
  * `http_stream`
124
131
  * `sse`
125
- * `sockjs` (yes, SockJS can also be used as a fallback in the bidirectional emulation layer, but sticky session must be used on the backend in distributed case, SockJS is currently in DEPRECATED status in Centrifugal ecosystem).
132
+ * `sockjs` (SockJS can also be used as a fallback, but sticky session must be used on the backend in distributed case, SockJS is currently in DEPRECATED status in Centrifugal ecosystem).
126
133
  * `webtransport` (experimental, see details below)
127
134
 
128
135
  If you want to use sticky sessions on a load balancer level as an optimimization for Centrifugal bidirectional emulation layer keep in mind that we currently use `same-origin` credentials policy for emulation requests in `http_stream` and `sse` transport cases. So cookies will only be passed in same-origin case. Please open an issue in case you need to configure more relaxed credentials. Though in most cases stickyness based on client's IP may be sufficient enough.
@@ -156,7 +163,7 @@ const centrifuge = new Centrifuge(transports, {
156
163
 
157
164
  Note, that in SockJS case endpoint starts with `http://`, not with `ws://` as we used above when connecting to a pure WebSocket endpoint.
158
165
 
159
- ## WebTransport (experimental)
166
+ ### WebTransport (experimental)
160
167
 
161
168
  WebTransport is experimental and is only supported by Centrifugo at the moment (i.e. it's not available in Centrifuge library for Go out of the box).
162
169
 
@@ -364,11 +371,7 @@ const client = new Centrifuge(
364
371
  );
365
372
  ```
366
373
 
367
- :::tip
368
-
369
- If initial token is not provided, but `getToken` is specified – then SDK assumes that developer wants to use token authentication. In this case SDK attempts to get a connection token before establishing an initial connection.
370
-
371
- :::
374
+ > If initial token is not provided, but `getToken` is specified – then SDK assumes that developer wants to use token authentication. In this case SDK attempts to get a connection token before establishing an initial connection.
372
375
 
373
376
  ## Subscription API
374
377
 
@@ -582,11 +585,35 @@ const sub = centrifuge.newSubscription(channel, {
582
585
  sub.subscribe();
583
586
  ```
584
587
 
585
- :::tip
588
+ > If initial token is not provided, but `getToken` is specified – then SDK assumes that developer wants to use token authorization for a channel subscription. In this case SDK attempts to get a subscription token before initial subscribe.
589
+
590
+ ## Subscription management API
591
+
592
+ According to [client SDK spec](https://centrifugal.dev/docs/transports/client_api#subscription-management) centrifuge-js supports several methods to manage client-side subscriptions in internal registry. The following methods are available on top level of the Centrifuge SDK client instance.
593
+
594
+ ### newSubscription
595
+
596
+ `newSubscription(channel: string, options?: Partial<SubscriptionOptions>): Subscription`
597
+
598
+ Creates new `Subscription` to a channel or throws an exception if the Subscription to a channel already exists in the internal registry of the client.
599
+
600
+ ### getSubscription
601
+
602
+ `getSubscription(channel: string): Subscription | null`
603
+
604
+ getSubscription returns `Subscription` if it's registered in the internal registry or `null`.
586
605
 
587
- If initial token is not provided, but `getToken` is specified – then SDK assumes that developer wants to use token authorization for a channel subscription. In this case SDK attempts to get a subscription token before initial subscribe.
606
+ ### removeSubscription
588
607
 
589
- :::
608
+ `removeSubscription(sub: Subscription | null)`
609
+
610
+ removeSubscription allows removing Subcription from the internal registry. Subscrption must be in unsubscribed state.
611
+
612
+ ### subscriptions
613
+
614
+ `subscriptions(): Record<string, Subscription>`
615
+
616
+ Get a map with all current client-side subscriptions registered in the client.
590
617
 
591
618
  ## Message batching
592
619
 
@@ -686,7 +713,7 @@ import Centrifuge from 'centrifuge/build/protobuf';
686
713
 
687
714
  This client uses [protobuf.js](https://github.com/dcodeIO/ProtoBuf.js/) under the hood.
688
715
 
689
- Centrifuge client with Protobuf support also works with JSON. To enable binary websocket add `protocol: "protobuf"` option to Centrifuge configuration options:
716
+ To enable binary websocket add `protocol: 'protobuf'` option to Centrifuge configuration options:
690
717
 
691
718
  ```javascript
692
719
  const centrifuge = new Centrifuge('ws://centrifuge.example.com/connection/websocket", {
@@ -694,6 +721,13 @@ const centrifuge = new Centrifuge('ws://centrifuge.example.com/connection/websoc
694
721
  });
695
722
  ```
696
723
 
724
+ When running with Protobuf protocol, you can send and receive any binary data as `Uint8Array`. Make sure data is properly encoded when calling methods of Centrifuge Protobuf-based instance. For example, you can not just send JSON-like objects like in JSON protocol case, you need to encode data to `Uint8Array` first:
725
+
726
+ ```javascript
727
+ const data = new TextEncoder("utf-8").encode(JSON.stringify({"any": "data"}));
728
+ sub.publish(data);
729
+ ```
730
+
697
731
  ## Using with NodeJS
698
732
 
699
733
  NodeJS does not have native WebSocket library in std lib. To use `centrifuge-js` on Node you need to explicitly provide WebSocket constructor to the library.
@@ -12,6 +12,7 @@ export declare class Centrifuge extends Centrifuge_base {
12
12
  private _transportWasOpen;
13
13
  private _transport?;
14
14
  private _transportClosed;
15
+ private _reconnecting;
15
16
  private _reconnectTimeout?;
16
17
  private _reconnectAttempts;
17
18
  private _client;
@@ -96,6 +97,7 @@ export declare class Centrifuge extends Centrifuge_base {
96
97
  private _isConnecting;
97
98
  private _isConnected;
98
99
  private _nextCommandId;
100
+ private _setNetworkEvents;
99
101
  private _getReconnectDelay;
100
102
  private _clearOutgoingRequests;
101
103
  private _clearConnectedState;
@@ -34,6 +34,7 @@ const defaults = {
34
34
  maxReconnectDelay: 20000,
35
35
  timeout: 5000,
36
36
  maxServerPingDelay: 10000,
37
+ networkEventTarget: null,
37
38
  };
38
39
  /** Centrifuge is a Centrifuge/Centrifugo bidirectional client. */
39
40
  class Centrifuge extends events_1.default {
@@ -54,6 +55,7 @@ class Centrifuge extends events_1.default {
54
55
  this._transportClosed = true;
55
56
  this._encoder = null;
56
57
  this._decoder = null;
58
+ this._reconnecting = false;
57
59
  this._reconnectTimeout = null;
58
60
  this._reconnectAttempts = 0;
59
61
  this._client = null;
@@ -245,8 +247,21 @@ class Centrifuge extends events_1.default {
245
247
  const self = this;
246
248
  return this._methodCall().then(function () {
247
249
  return self._callPromise(cmd, function (reply) {
250
+ const clients = reply.presence.presence;
251
+ for (const clientId in clients) {
252
+ if (clients.hasOwnProperty(clientId)) {
253
+ const connInfo = clients[clientId]['conn_info'];
254
+ const chanInfo = clients[clientId]['chan_info'];
255
+ if (connInfo) {
256
+ clients[clientId].connInfo = connInfo;
257
+ }
258
+ if (chanInfo) {
259
+ clients[clientId].chanInfo = chanInfo;
260
+ }
261
+ }
262
+ }
248
263
  return {
249
- 'clients': reply.presence.presence
264
+ 'clients': clients
250
265
  };
251
266
  });
252
267
  });
@@ -356,6 +371,7 @@ class Centrifuge extends events_1.default {
356
371
  }
357
372
  _setState(newState) {
358
373
  if (this.state !== newState) {
374
+ this._reconnecting = false;
359
375
  const oldState = this.state;
360
376
  this.state = newState;
361
377
  this.emit('state', { newState, oldState });
@@ -375,6 +391,31 @@ class Centrifuge extends events_1.default {
375
391
  _nextCommandId() {
376
392
  return ++this._commandId;
377
393
  }
394
+ _setNetworkEvents() {
395
+ let eventTarget = null;
396
+ if (this._config.networkEventTarget !== null) {
397
+ eventTarget = this._config.networkEventTarget;
398
+ }
399
+ else if (typeof globalThis.addEventListener !== 'undefined') {
400
+ eventTarget = globalThis;
401
+ }
402
+ if (eventTarget) {
403
+ eventTarget.addEventListener('offline', () => {
404
+ this._debug('offline event triggered');
405
+ if (this.state === types_1.State.Connected && this._transport && !this._transportClosed) {
406
+ this._transportClosed = true;
407
+ this._transport.close();
408
+ }
409
+ });
410
+ eventTarget.addEventListener('online', () => {
411
+ this._debug('online event triggered');
412
+ if (this.state === types_1.State.Connecting) {
413
+ this._clearReconnectTimeout();
414
+ this._startReconnecting();
415
+ }
416
+ });
417
+ }
418
+ }
378
419
  _getReconnectDelay() {
379
420
  const delay = (0, utils_1.backoff)(this._reconnectAttempts, this._config.minReconnectDelay, this._config.maxReconnectDelay);
380
421
  this._reconnectAttempts += 1;
@@ -702,6 +743,7 @@ class Centrifuge extends events_1.default {
702
743
  delay = 0;
703
744
  }
704
745
  self._debug('reconnect after ' + delay + ' milliseconds');
746
+ self._reconnecting = false;
705
747
  self._reconnectTimeout = setTimeout(() => {
706
748
  self._startReconnecting();
707
749
  }, delay);
@@ -733,9 +775,10 @@ class Centrifuge extends events_1.default {
733
775
  return connectCommand;
734
776
  }
735
777
  _startReconnecting() {
736
- if (!this._isConnecting()) {
778
+ if (!this._isConnecting() || this._reconnecting) {
737
779
  return;
738
780
  }
781
+ this._reconnecting = true;
739
782
  const needTokenRefresh = this._refreshRequired || (!this._token && this._config.getToken !== null);
740
783
  if (!needTokenRefresh) {
741
784
  this._initializeTransport();
@@ -766,6 +809,7 @@ class Centrifuge extends events_1.default {
766
809
  });
767
810
  const delay = self._getReconnectDelay();
768
811
  self._debug('error on connection token refresh, reconnect after ' + delay + ' milliseconds', e);
812
+ self._reconnecting = false;
769
813
  self._reconnectTimeout = setTimeout(() => {
770
814
  self._startReconnecting();
771
815
  }, delay);
@@ -1143,6 +1187,7 @@ class Centrifuge extends events_1.default {
1143
1187
  }
1144
1188
  this._client = result.client;
1145
1189
  this._setState(types_1.State.Connected);
1190
+ this._setNetworkEvents();
1146
1191
  if (this._refreshTimeout) {
1147
1192
  clearTimeout(this._refreshTimeout);
1148
1193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"centrifuge.js","sourceRoot":"","sources":["../src/centrifuge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"centrifuge.js","sourceRoot":"","sources":["../src/centrifuge.ts"],"names":[],"mappings":"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"}
package/build/types.d.ts CHANGED
@@ -64,7 +64,8 @@ export interface TransportEndpoint {
64
64
  }
65
65
  /** Options for Centrifuge client. */
66
66
  export interface Options {
67
- /** select protocol to use. Note that to use Protobuf protocol you need to use CentrifugeProtobuf class. */
67
+ /** select protocol to use. Note that to use Protobuf protocol you need to use
68
+ * CentrifugeProtobuf class. */
68
69
  protocol: 'json' | 'protobuf';
69
70
  /** allows enabling debug mode */
70
71
  debug: boolean;
@@ -74,19 +75,21 @@ export interface Options {
74
75
  getToken: null | ((ctx: ConnectionTokenContext) => Promise<string>);
75
76
  /** data to send to a server with connect command */
76
77
  data: any | null;
77
- /** name of client - it's not a unique name of each connection, it's sth to identify from where client connected */
78
+ /** name of client - it's not a unique name of each connection, it's sth to identify
79
+ * from where client connected */
78
80
  name: string;
79
81
  /** version of client */
80
82
  version: string;
81
- /** minimum delay between reconnect attemts in milliseconds */
83
+ /** minimum delay between reconnect attempts in milliseconds */
82
84
  minReconnectDelay: number;
83
- /** maximum delay between reconnect attemts in milliseconds */
85
+ /** maximum delay between reconnect attempts in milliseconds */
84
86
  maxReconnectDelay: number;
85
87
  /** timeout for operations in milliseconds */
86
88
  timeout: number;
87
89
  /** maximum delay of server pings to detect broken connection in milliseconds */
88
90
  maxServerPingDelay: number;
89
- /** provide custom WebSocket constructor, useful for NodeJS env where WebSocket is not available globally */
91
+ /** provide custom WebSocket constructor, useful for NodeJS env where WebSocket is not
92
+ * available globally */
90
93
  websocket: any | null;
91
94
  /** provide shim for fetch implementation */
92
95
  fetch: any | null;
@@ -100,6 +103,10 @@ export interface Options {
100
103
  sockjsOptions: SockjsOptions;
101
104
  /** which emulation endpoint to use */
102
105
  emulationEndpoint: string;
106
+ /** EventTarget for network online/offline events, in browser environment
107
+ * Centrifuge uses global window online/offline events automatically
108
+ * by default. */
109
+ networkEventTarget: EventTarget | null;
103
110
  }
104
111
  export interface SockjsOptions {
105
112
  transports?: string[];
@@ -163,7 +170,7 @@ export interface SubscriptionStateContext {
163
170
  export interface ServerSubscribedContext {
164
171
  /** channel of Subscription. */
165
172
  channel: string;
166
- /** Subscription is recoverable – i.e. can automatically recover missied messages */
173
+ /** Subscription is recoverable – i.e. can automatically recover missed messages */
167
174
  recoverable: boolean;
168
175
  /** Subscription is positioned – i.e. server tracks message loss on the way from PUB/SUB broker */
169
176
  positioned: boolean;
@@ -258,13 +265,13 @@ export interface SubscriptionOptions {
258
265
  data: any | null;
259
266
  /** force recovery on first subscribe from a provided StreamPosition. */
260
267
  since: StreamPosition | null;
261
- /** min delay between resubscribe attemts. */
268
+ /** min delay between resubscribe attempts. */
262
269
  minResubscribeDelay: number;
263
270
  /** max delay between resubscribe attempts. */
264
271
  maxResubscribeDelay: number;
265
- /** ask server to make subsription positioned. */
272
+ /** ask server to make subscription positioned. */
266
273
  positioned: boolean;
267
- /** ask server to make subsription recoverable. */
274
+ /** ask server to make subscription recoverable. */
268
275
  recoverable: boolean;
269
276
  /** ask server to send join/leave messages. */
270
277
  joinLeave: boolean;