@rc-ex/ws 0.11.2 → 0.13.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/index.ts +11 -11
- package/lib/index.d.ts +1 -2
- package/lib/index.js +10 -9
- package/lib/index.js.map +1 -1
- package/lib/package.json +4 -5
- package/lib/subscription.d.ts +2 -2
- package/lib/subscription.js +2 -1
- package/lib/subscription.js.map +1 -1
- package/lib/utils.js +4 -2
- package/lib/utils.js.map +1 -1
- package/package.json +4 -5
- package/subscription.ts +4 -2
- package/utils.ts +5 -3
package/index.ts
CHANGED
|
@@ -5,11 +5,10 @@ import {
|
|
|
5
5
|
RestMethod,
|
|
6
6
|
} from '@rc-ex/core/lib/Rest';
|
|
7
7
|
import SdkExtension from '@rc-ex/core/lib/SdkExtension';
|
|
8
|
-
import WS, {OPEN, CONNECTING} from 'isomorphic-ws';
|
|
8
|
+
import WS, {OPEN, CONNECTING, MessageEvent} from 'isomorphic-ws';
|
|
9
9
|
import hyperid from 'hyperid';
|
|
10
10
|
import {EventEmitter} from 'events';
|
|
11
11
|
import waitFor from 'wait-for-async';
|
|
12
|
-
import RateLimitExtension from '@rc-ex/rate-limit';
|
|
13
12
|
import RestException from '@rc-ex/core/lib/RestException';
|
|
14
13
|
import {SubscriptionInfo} from '@rc-ex/core/lib/definitions';
|
|
15
14
|
|
|
@@ -41,6 +40,7 @@ class WebSocketExtension extends SdkExtension {
|
|
|
41
40
|
options: WebSocketOptions;
|
|
42
41
|
rc!: RingCentral;
|
|
43
42
|
wsToken!: WsToken;
|
|
43
|
+
wsTokenExpiresAt = 0;
|
|
44
44
|
ws!: WS;
|
|
45
45
|
connectionDetails!: ConnectionDetails;
|
|
46
46
|
wsc!: Wsc;
|
|
@@ -53,8 +53,6 @@ class WebSocketExtension extends SdkExtension {
|
|
|
53
53
|
|
|
54
54
|
request = request; // request method was moved to another file to keep this file short
|
|
55
55
|
|
|
56
|
-
rateLimitExtension: RateLimitExtension = new RateLimitExtension(); // to rate limit /restapi/oauth/wstoken
|
|
57
|
-
|
|
58
56
|
constructor(options: WebSocketOptions = {}) {
|
|
59
57
|
super();
|
|
60
58
|
this.options = options;
|
|
@@ -78,8 +76,6 @@ class WebSocketExtension extends SdkExtension {
|
|
|
78
76
|
}
|
|
79
77
|
|
|
80
78
|
async install(rc: RingCentral) {
|
|
81
|
-
this.rateLimitExtension.disable();
|
|
82
|
-
await rc.installExtension(this.rateLimitExtension);
|
|
83
79
|
this.rc = rc;
|
|
84
80
|
const request = rc.request.bind(rc);
|
|
85
81
|
rc.request = async <T>(
|
|
@@ -234,10 +230,12 @@ class WebSocketExtension extends SdkExtension {
|
|
|
234
230
|
}
|
|
235
231
|
|
|
236
232
|
async connect(recoverSession = false) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
233
|
+
if (Date.now() > this.wsTokenExpiresAt) {
|
|
234
|
+
const r = await this.rc.post('/restapi/oauth/wstoken');
|
|
235
|
+
this.wsToken = r.data as WsToken;
|
|
236
|
+
this.wsTokenExpiresAt =
|
|
237
|
+
Date.now() + (this.wsToken.expires_in - 10) * 1000;
|
|
238
|
+
}
|
|
241
239
|
let wsUri = `${this.wsToken.uri}?access_token=${this.wsToken.ws_access_token}`;
|
|
242
240
|
if (recoverSession) {
|
|
243
241
|
wsUri = `${wsUri}&wsc=${this.wsc.token}`;
|
|
@@ -275,7 +273,8 @@ class WebSocketExtension extends SdkExtension {
|
|
|
275
273
|
}
|
|
276
274
|
|
|
277
275
|
// listen for new wsc data
|
|
278
|
-
this.ws.addEventListener('message', (
|
|
276
|
+
this.ws.addEventListener('message', (mEvent: MessageEvent) => {
|
|
277
|
+
const event = mEvent as WsgEvent;
|
|
279
278
|
const [meta, body] = Utils.splitWsgData(event.data);
|
|
280
279
|
if (
|
|
281
280
|
meta.wsc &&
|
|
@@ -297,6 +296,7 @@ class WebSocketExtension extends SdkExtension {
|
|
|
297
296
|
throw new ConnectionException(event);
|
|
298
297
|
}
|
|
299
298
|
this.connectionDetails = body;
|
|
299
|
+
this.wsTokenExpiresAt = 0; // mark wsToken as expired after ws connection success
|
|
300
300
|
|
|
301
301
|
// recover all subscriptions, if there are any
|
|
302
302
|
for (const subscription of this.subscriptions.filter(sub => sub.enabled)) {
|
package/lib/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import RingCentral from '@rc-ex/core';
|
|
|
4
4
|
import SdkExtension from '@rc-ex/core/lib/SdkExtension';
|
|
5
5
|
import WS from 'isomorphic-ws';
|
|
6
6
|
import { EventEmitter } from 'events';
|
|
7
|
-
import RateLimitExtension from '@rc-ex/rate-limit';
|
|
8
7
|
import { SubscriptionInfo } from '@rc-ex/core/lib/definitions';
|
|
9
8
|
import { request } from './rest';
|
|
10
9
|
import { WsToken, ConnectionDetails, WebSocketOptions, Wsc } from './types';
|
|
@@ -21,6 +20,7 @@ declare class WebSocketExtension extends SdkExtension {
|
|
|
21
20
|
options: WebSocketOptions;
|
|
22
21
|
rc: RingCentral;
|
|
23
22
|
wsToken: WsToken;
|
|
23
|
+
wsTokenExpiresAt: number;
|
|
24
24
|
ws: WS;
|
|
25
25
|
connectionDetails: ConnectionDetails;
|
|
26
26
|
wsc: Wsc;
|
|
@@ -29,7 +29,6 @@ declare class WebSocketExtension extends SdkExtension {
|
|
|
29
29
|
recoverTimestamp?: number;
|
|
30
30
|
pingServerHandle?: NodeJS.Timeout;
|
|
31
31
|
request: typeof request;
|
|
32
|
-
rateLimitExtension: RateLimitExtension;
|
|
33
32
|
constructor(options?: WebSocketOptions);
|
|
34
33
|
disable(): void;
|
|
35
34
|
install(rc: RingCentral): Promise<void>;
|
package/lib/index.js
CHANGED
|
@@ -28,7 +28,6 @@ const isomorphic_ws_1 = __importStar(require("isomorphic-ws"));
|
|
|
28
28
|
const hyperid_1 = __importDefault(require("hyperid"));
|
|
29
29
|
const events_1 = require("events");
|
|
30
30
|
const wait_for_async_1 = __importDefault(require("wait-for-async"));
|
|
31
|
-
const rate_limit_1 = __importDefault(require("@rc-ex/rate-limit"));
|
|
32
31
|
const RestException_1 = __importDefault(require("@rc-ex/core/lib/RestException"));
|
|
33
32
|
const rest_1 = require("./rest");
|
|
34
33
|
const subscription_1 = __importDefault(require("./subscription"));
|
|
@@ -49,9 +48,9 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
49
48
|
var _f, _g, _h, _j, _k;
|
|
50
49
|
super();
|
|
51
50
|
this.eventEmitter = new events_1.EventEmitter();
|
|
51
|
+
this.wsTokenExpiresAt = 0;
|
|
52
52
|
this.subscriptions = [];
|
|
53
53
|
this.request = rest_1.request; // request method was moved to another file to keep this file short
|
|
54
|
-
this.rateLimitExtension = new rate_limit_1.default(); // to rate limit /restapi/oauth/wstoken
|
|
55
54
|
this.options = options;
|
|
56
55
|
(_a = (_f = this.options).restOverWebSocket) !== null && _a !== void 0 ? _a : (_f.restOverWebSocket = false);
|
|
57
56
|
(_b = (_g = this.options).debugMode) !== null && _b !== void 0 ? _b : (_g.debugMode = false);
|
|
@@ -72,8 +71,6 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
72
71
|
}
|
|
73
72
|
}
|
|
74
73
|
async install(rc) {
|
|
75
|
-
this.rateLimitExtension.disable();
|
|
76
|
-
await rc.installExtension(this.rateLimitExtension);
|
|
77
74
|
this.rc = rc;
|
|
78
75
|
const request = rc.request.bind(rc);
|
|
79
76
|
rc.request = async (method, endpoint, content, queryParams, config) => {
|
|
@@ -211,10 +208,12 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
211
208
|
}
|
|
212
209
|
async connect(recoverSession = false) {
|
|
213
210
|
var _a;
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
211
|
+
if (Date.now() > this.wsTokenExpiresAt) {
|
|
212
|
+
const r = await this.rc.post('/restapi/oauth/wstoken');
|
|
213
|
+
this.wsToken = r.data;
|
|
214
|
+
this.wsTokenExpiresAt =
|
|
215
|
+
Date.now() + (this.wsToken.expires_in - 10) * 1000;
|
|
216
|
+
}
|
|
218
217
|
let wsUri = `${this.wsToken.uri}?access_token=${this.wsToken.ws_access_token}`;
|
|
219
218
|
if (recoverSession) {
|
|
220
219
|
wsUri = `${wsUri}&wsc=${this.wsc.token}`;
|
|
@@ -245,7 +244,8 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
245
244
|
utils_1.default.debugWebSocket(this.ws);
|
|
246
245
|
}
|
|
247
246
|
// listen for new wsc data
|
|
248
|
-
this.ws.addEventListener('message', (
|
|
247
|
+
this.ws.addEventListener('message', (mEvent) => {
|
|
248
|
+
const event = mEvent;
|
|
249
249
|
const [meta, body] = utils_1.default.splitWsgData(event.data);
|
|
250
250
|
if (meta.wsc &&
|
|
251
251
|
(!this.wsc ||
|
|
@@ -261,6 +261,7 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
261
261
|
throw new exceptions_1.ConnectionException(event);
|
|
262
262
|
}
|
|
263
263
|
this.connectionDetails = body;
|
|
264
|
+
this.wsTokenExpiresAt = 0; // mark wsToken as expired after ws connection success
|
|
264
265
|
// recover all subscriptions, if there are any
|
|
265
266
|
for (const subscription of this.subscriptions.filter(sub => sub.enabled)) {
|
|
266
267
|
// because we have a new ws object
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,gFAAwD;AACxD,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-ex/ws",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "WebSocket extension for ringcentral-extensible project",
|
|
5
5
|
"author": "Tyler Liu <tyler.liu@ringcentral.com>",
|
|
6
6
|
"homepage": "https://github.com/ringcentral/ringcentral-extensible/tree/master/packages/extensions/ws",
|
|
@@ -18,13 +18,12 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@
|
|
22
|
-
"@types/ws": "^7.4.7",
|
|
21
|
+
"@types/ws": "^8.2.0",
|
|
23
22
|
"http-status-codes": "^2.1.4",
|
|
24
23
|
"hyperid": "^2.3.1",
|
|
25
24
|
"isomorphic-ws": "^4.0.1",
|
|
26
25
|
"wait-for-async": "^0.5.0",
|
|
27
|
-
"ws": "^8.2.
|
|
26
|
+
"ws": "^8.2.3"
|
|
28
27
|
},
|
|
29
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "e9799633ec09e81fd67f397e7acbd527573740c2"
|
|
30
29
|
}
|
package/lib/subscription.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { CreateSubscriptionRequest, SubscriptionInfo } from '@rc-ex/core/lib/definitions';
|
|
3
|
+
import { MessageEvent } from 'ws';
|
|
3
4
|
import WebSocketExtension from './index';
|
|
4
|
-
import { WsgEvent } from './types';
|
|
5
5
|
declare class Subscription {
|
|
6
6
|
wse: WebSocketExtension;
|
|
7
7
|
eventFilters: string[];
|
|
8
|
-
eventListener: (event:
|
|
8
|
+
eventListener: (event: MessageEvent) => void;
|
|
9
9
|
timeout?: NodeJS.Timeout;
|
|
10
10
|
enabled: boolean;
|
|
11
11
|
constructor(wse: WebSocketExtension, eventFilters: string[], callback: (event: {}) => void);
|
package/lib/subscription.js
CHANGED
|
@@ -9,7 +9,8 @@ class Subscription {
|
|
|
9
9
|
this.enabled = true;
|
|
10
10
|
this.wse = wse;
|
|
11
11
|
this.eventFilters = eventFilters;
|
|
12
|
-
this.eventListener = (
|
|
12
|
+
this.eventListener = (mEvent) => {
|
|
13
|
+
const event = mEvent;
|
|
13
14
|
const [meta, body] = utils_1.default.splitWsgData(event.data);
|
|
14
15
|
if (this.enabled &&
|
|
15
16
|
meta.type === 'ServerNotification' &&
|
package/lib/subscription.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../subscription.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../subscription.ts"],"names":[],"mappings":"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"}
|
package/lib/utils.js
CHANGED
|
@@ -23,7 +23,8 @@ class Utils {
|
|
|
23
23
|
${JSON.stringify(JSON.parse(str), null, 2)}
|
|
24
24
|
******`);
|
|
25
25
|
};
|
|
26
|
-
ws.addEventListener('message', (
|
|
26
|
+
ws.addEventListener('message', (mEvent) => {
|
|
27
|
+
const event = mEvent;
|
|
27
28
|
console.debug(`*** WebSocket incoming message: ***
|
|
28
29
|
${JSON.stringify(JSON.parse(event.data), null, 2)}
|
|
29
30
|
******`);
|
|
@@ -53,7 +54,8 @@ ${JSON.stringify(JSON.parse(event.data), null, 2)}
|
|
|
53
54
|
reject(new exceptions_1.TimeoutException());
|
|
54
55
|
return;
|
|
55
56
|
}, timeout);
|
|
56
|
-
const handler = (
|
|
57
|
+
const handler = (mEvent) => {
|
|
58
|
+
const event = mEvent;
|
|
57
59
|
const [meta, body] = Utils.splitWsgData(event.data);
|
|
58
60
|
if (matchCondition(meta)) {
|
|
59
61
|
ws.removeEventListener('message', handler);
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":";;AAGA,6CAA+D;AAE/D,MAAM,KAAK;IACT,8DAA8D;IAC9D,MAAM,CAAC,YAAY,CAAC,OAAe;QACjC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC7C,OAAO;gBACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;aACjD,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,EAAM;QAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;YAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,CAAC,KAAK,CACX;EACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;OACnC,CACA,CAAC;QACJ,CAAC,CAAC;QACF,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-ex/ws",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "WebSocket extension for ringcentral-extensible project",
|
|
5
5
|
"author": "Tyler Liu <tyler.liu@ringcentral.com>",
|
|
6
6
|
"homepage": "https://github.com/ringcentral/ringcentral-extensible/tree/master/packages/extensions/ws",
|
|
@@ -18,13 +18,12 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@
|
|
22
|
-
"@types/ws": "^7.4.7",
|
|
21
|
+
"@types/ws": "^8.2.0",
|
|
23
22
|
"http-status-codes": "^2.1.4",
|
|
24
23
|
"hyperid": "^2.3.1",
|
|
25
24
|
"isomorphic-ws": "^4.0.1",
|
|
26
25
|
"wait-for-async": "^0.5.0",
|
|
27
|
-
"ws": "^8.2.
|
|
26
|
+
"ws": "^8.2.3"
|
|
28
27
|
},
|
|
29
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "e9799633ec09e81fd67f397e7acbd527573740c2"
|
|
30
29
|
}
|
package/subscription.ts
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
SubscriptionInfo,
|
|
4
4
|
} from '@rc-ex/core/lib/definitions';
|
|
5
5
|
import {RestResponse} from '@rc-ex/core/lib/Rest';
|
|
6
|
+
import {MessageEvent} from 'ws';
|
|
6
7
|
|
|
7
8
|
import WebSocketExtension from './index';
|
|
8
9
|
import {WsgEvent, WsgMeta} from './types';
|
|
@@ -11,7 +12,7 @@ import Utils from './utils';
|
|
|
11
12
|
class Subscription {
|
|
12
13
|
wse: WebSocketExtension;
|
|
13
14
|
eventFilters: string[];
|
|
14
|
-
eventListener: (event:
|
|
15
|
+
eventListener: (event: MessageEvent) => void;
|
|
15
16
|
timeout?: NodeJS.Timeout;
|
|
16
17
|
enabled = true;
|
|
17
18
|
|
|
@@ -22,7 +23,8 @@ class Subscription {
|
|
|
22
23
|
) {
|
|
23
24
|
this.wse = wse;
|
|
24
25
|
this.eventFilters = eventFilters;
|
|
25
|
-
this.eventListener = (
|
|
26
|
+
this.eventListener = (mEvent: MessageEvent) => {
|
|
27
|
+
const event = mEvent as WsgEvent;
|
|
26
28
|
const [meta, body]: [WsgMeta, {subscriptionId: string}] =
|
|
27
29
|
Utils.splitWsgData(event.data);
|
|
28
30
|
if (
|
package/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import WS from 'isomorphic-ws';
|
|
1
|
+
import WS, {MessageEvent} from 'isomorphic-ws';
|
|
2
2
|
|
|
3
3
|
import {WsgMeta, WsgEvent} from './types';
|
|
4
4
|
import {ClosedException, TimeoutException} from './exceptions';
|
|
@@ -27,7 +27,8 @@ ${JSON.stringify(JSON.parse(str), null, 2)}
|
|
|
27
27
|
******`
|
|
28
28
|
);
|
|
29
29
|
};
|
|
30
|
-
ws.addEventListener('message', (
|
|
30
|
+
ws.addEventListener('message', (mEvent: MessageEvent) => {
|
|
31
|
+
const event = mEvent as WsgEvent;
|
|
31
32
|
console.debug(
|
|
32
33
|
`*** WebSocket incoming message: ***
|
|
33
34
|
${JSON.stringify(JSON.parse(event.data), null, 2)}
|
|
@@ -64,7 +65,8 @@ ${JSON.stringify(JSON.parse(event.data), null, 2)}
|
|
|
64
65
|
reject(new TimeoutException());
|
|
65
66
|
return;
|
|
66
67
|
}, timeout);
|
|
67
|
-
const handler = (
|
|
68
|
+
const handler = (mEvent: MessageEvent) => {
|
|
69
|
+
const event = mEvent as WsgEvent;
|
|
68
70
|
const [meta, body] = Utils.splitWsgData(event.data);
|
|
69
71
|
if (matchCondition(meta)) {
|
|
70
72
|
ws.removeEventListener('message', handler);
|