@kookapp/im-socket 0.0.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.
Files changed (57) hide show
  1. package/README.md +67 -0
  2. package/dist/cjs/Frame.js +31 -0
  3. package/dist/cjs/Frame.js.map +1 -0
  4. package/dist/cjs/Session.js +70 -0
  5. package/dist/cjs/Session.js.map +1 -0
  6. package/dist/cjs/Socket.js +126 -0
  7. package/dist/cjs/Socket.js.map +1 -0
  8. package/dist/cjs/StateSession.js +327 -0
  9. package/dist/cjs/StateSession.js.map +1 -0
  10. package/dist/cjs/TaskTimer.js +53 -0
  11. package/dist/cjs/TaskTimer.js.map +1 -0
  12. package/dist/cjs/WebsocketSession.js +118 -0
  13. package/dist/cjs/WebsocketSession.js.map +1 -0
  14. package/dist/cjs/constants.js +32 -0
  15. package/dist/cjs/constants.js.map +1 -0
  16. package/dist/cjs/index.js +29 -0
  17. package/dist/cjs/index.js.map +1 -0
  18. package/dist/cjs/logger.js +31 -0
  19. package/dist/cjs/logger.js.map +1 -0
  20. package/dist/cjs/package.json +1 -0
  21. package/dist/esm/Frame.d.ts +20 -0
  22. package/dist/esm/Frame.d.ts.map +1 -0
  23. package/dist/esm/Frame.js +27 -0
  24. package/dist/esm/Frame.js.map +1 -0
  25. package/dist/esm/Session.d.ts +8 -0
  26. package/dist/esm/Session.d.ts.map +1 -0
  27. package/dist/esm/Session.js +31 -0
  28. package/dist/esm/Session.js.map +1 -0
  29. package/dist/esm/Socket.d.ts +41 -0
  30. package/dist/esm/Socket.d.ts.map +1 -0
  31. package/dist/esm/Socket.js +119 -0
  32. package/dist/esm/Socket.js.map +1 -0
  33. package/dist/esm/StateSession.d.ts +71 -0
  34. package/dist/esm/StateSession.d.ts.map +1 -0
  35. package/dist/esm/StateSession.js +288 -0
  36. package/dist/esm/StateSession.js.map +1 -0
  37. package/dist/esm/TaskTimer.d.ts +8 -0
  38. package/dist/esm/TaskTimer.d.ts.map +1 -0
  39. package/dist/esm/TaskTimer.js +50 -0
  40. package/dist/esm/TaskTimer.js.map +1 -0
  41. package/dist/esm/WebsocketSession.d.ts +15 -0
  42. package/dist/esm/WebsocketSession.d.ts.map +1 -0
  43. package/dist/esm/WebsocketSession.js +112 -0
  44. package/dist/esm/WebsocketSession.js.map +1 -0
  45. package/dist/esm/constants.d.ts +29 -0
  46. package/dist/esm/constants.d.ts.map +1 -0
  47. package/dist/esm/constants.js +29 -0
  48. package/dist/esm/constants.js.map +1 -0
  49. package/dist/esm/index.d.ts +9 -0
  50. package/dist/esm/index.d.ts.map +1 -0
  51. package/dist/esm/index.js +10 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/logger.d.ts +9 -0
  54. package/dist/esm/logger.d.ts.map +1 -0
  55. package/dist/esm/logger.js +27 -0
  56. package/dist/esm/logger.js.map +1 -0
  57. package/package.json +68 -0
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ let uid = 1;
4
+ function getUid() {
5
+ return `task_${uid++}`;
6
+ }
7
+ class TaskTimer {
8
+ constructor() {
9
+ this.taskMap = {};
10
+ }
11
+ addTask(task) {
12
+ if (!task.name) {
13
+ task.name = getUid();
14
+ }
15
+ task.start = task.start || 0;
16
+ this.taskMap[task.name] = task;
17
+ this.run(task);
18
+ return task.name;
19
+ }
20
+ removeTask(name) {
21
+ let task = this.taskMap[name];
22
+ if (task) {
23
+ clearTimeout(task.timer);
24
+ delete this.taskMap[name];
25
+ }
26
+ }
27
+ run(task) {
28
+ const next = () => {
29
+ let exist = Boolean(this.taskMap[task.name]);
30
+ if (exist) {
31
+ this.run(task);
32
+ }
33
+ return exist;
34
+ };
35
+ task.retry = task.retry || 0;
36
+ let timeout = task.retry == 0
37
+ ? task.start
38
+ : task.start + Math.pow(2, task.retry);
39
+ timeout = timeout * (Math.random() * 0.2 + 0.9);
40
+ if (typeof task.max == 'number') {
41
+ timeout = Math.min(timeout, task.max);
42
+ }
43
+ task.retry++;
44
+ task.timer = setTimeout(task.handle, timeout * 1000, next, { ...task });
45
+ }
46
+ removeAll() {
47
+ Object.keys(this.taskMap).forEach((name) => {
48
+ this.removeTask(name);
49
+ });
50
+ }
51
+ }
52
+ exports.default = TaskTimer;
53
+ //# sourceMappingURL=TaskTimer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskTimer.js","sourceRoot":"","sources":["../../src/TaskTimer.js"],"names":[],"mappings":";;AAAA,IAAI,GAAG,GAAG,CAAC,CAAA;AAEX,SAAS,MAAM;IACb,OAAO,QAAQ,GAAG,EAAE,EAAE,CAAA;AACxB,CAAC;AAED,MAAqB,SAAS;IAC5B;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,OAAO,CAAC,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,UAAU,CAAC,IAAI;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAI;QACN,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAE5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;QAE/C,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IACzE,CAAC;IAED,SAAS;QACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AArDD,4BAqDC"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const StateSession_1 = __importDefault(require("./StateSession"));
7
+ const constants_1 = require("./constants");
8
+ const logger_1 = __importDefault(require("./logger"));
9
+ class WebsocketSession extends StateSession_1.default {
10
+ constructor(token, baseUrl, compress, options = {}) {
11
+ super(compress);
12
+ this.token = token;
13
+ this.baseUrl = baseUrl;
14
+ this.options = options;
15
+ }
16
+ async reqGateWay() {
17
+ if (this.options.gatewayProvider) {
18
+ return this.options.gatewayProvider();
19
+ }
20
+ if (this.options.onGetGateway) {
21
+ return this.options.onGetGateway();
22
+ }
23
+ return this._defaultReqGateWay();
24
+ }
25
+ async _defaultReqGateWay() {
26
+ const extraHeaders = this.options.headerProvider
27
+ ? await this.options.headerProvider()
28
+ : (this.options.headers || {});
29
+ return fetch(`${this.baseUrl}/api/v3/gateway/index`, {
30
+ method: 'GET',
31
+ headers: {
32
+ Authorization: this.token,
33
+ ...extraHeaders,
34
+ },
35
+ })
36
+ .then((res) => res.json())
37
+ .then(({ data } = {}) => data);
38
+ }
39
+ _createSocket(url) {
40
+ if (this.options.createSocket) {
41
+ return this.options.createSocket(url);
42
+ }
43
+ return new WebSocket(url);
44
+ }
45
+ async connectWebsocket() {
46
+ let gateway = this.gateway;
47
+ if (!gateway) {
48
+ logger_1.default.warn('gateway is undefined');
49
+ return Promise.reject();
50
+ }
51
+ let resumeParams = '';
52
+ if (this.sessionId) {
53
+ resumeParams = `&resume=1&sessionId=${this.sessionId}&sn=${this.maxSn}`;
54
+ }
55
+ let extraParams = '';
56
+ if (this.options.queryProvider) {
57
+ const queryObj = await this.options.queryProvider({
58
+ sessionId: this.sessionId,
59
+ maxSn: this.maxSn,
60
+ isResume: Boolean(this.sessionId),
61
+ });
62
+ const qs = new URLSearchParams(queryObj).toString();
63
+ if (qs)
64
+ extraParams = '&' + qs;
65
+ }
66
+ else {
67
+ const queryParams = this.options.queryParams || {};
68
+ const qs = new URLSearchParams(queryParams).toString();
69
+ if (qs)
70
+ extraParams = '&' + qs;
71
+ }
72
+ const wsUrl = `${gateway}${resumeParams}${extraParams}`;
73
+ if (this.ws) {
74
+ this.ws.onclose = null;
75
+ this.ws.close();
76
+ }
77
+ let ws = this._createSocket(wsUrl);
78
+ this.ws = ws;
79
+ ws.binaryType = 'arraybuffer';
80
+ let onDisconnect = (evt) => {
81
+ logger_1.default.log(`ws close code: ${evt.code}, state: ${this.state}`);
82
+ if (![constants_1.SessionState.origin, constants_1.SessionState.init].includes(this.state)) {
83
+ this.setState(constants_1.SessionState.gateway);
84
+ }
85
+ };
86
+ this.ws.onmessage = (evt) => {
87
+ this.receiveData(evt.data);
88
+ };
89
+ this.ws.onerror = (error) => {
90
+ logger_1.default.log('ws error', error);
91
+ };
92
+ return new Promise((resolve, reject) => {
93
+ this.ws.onopen = () => {
94
+ resolve('open');
95
+ this.ws.onclose = onDisconnect;
96
+ };
97
+ this.ws.onclose = (evt) => {
98
+ logger_1.default.log('ws open fail', evt.code);
99
+ reject();
100
+ };
101
+ });
102
+ }
103
+ sendData(data) {
104
+ if (this.ws && this.ws.readyState === 1) {
105
+ this.ws.send(data);
106
+ }
107
+ }
108
+ stop() {
109
+ logger_1.default.log('stop');
110
+ this._stop();
111
+ if (this.ws) {
112
+ this.ws.onclose = null;
113
+ this.ws.close();
114
+ }
115
+ }
116
+ }
117
+ exports.default = WebsocketSession;
118
+ //# sourceMappingURL=WebsocketSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebsocketSession.js","sourceRoot":"","sources":["../../src/WebsocketSession.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PCIMLibStateEnum = exports.IMLibStateEnum = exports.SessionState = void 0;
4
+ exports.SessionState = {
5
+ origin: 0,
6
+ init: 1,
7
+ gateway: 2,
8
+ wsConnected: 3,
9
+ connected: 4,
10
+ retry: 5,
11
+ };
12
+ exports.IMLibStateEnum = {
13
+ ORIGIN: 0,
14
+ GATEWAY_RUNING: 1,
15
+ GATEWAY_OK: 2,
16
+ WS_CONNECTED: 3,
17
+ CONNECTED: 4,
18
+ HEARTBEAT_TIMEOUT: 5,
19
+ };
20
+ exports.PCIMLibStateEnum = {
21
+ kKookImStateInit: 0,
22
+ kKookImStateStarted: 1,
23
+ kKookImStateGetGatewayOK: 2,
24
+ kKookImStateGatewayConnected: 3,
25
+ kKookImStateConnetced: 4,
26
+ kKookImStateTimeout: 5,
27
+ kKookImStateStopPending: 6,
28
+ kKookImStateStopped: 7,
29
+ kKookImStateFailed: 8,
30
+ kKookImStateEnded: 9,
31
+ };
32
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,CAAC;CACT,CAAA;AAEY,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,CAAC;IACT,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,iBAAiB,EAAE,CAAC;CACrB,CAAA;AAEY,QAAA,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,CAAC;IACnB,mBAAmB,EAAE,CAAC;IACtB,wBAAwB,EAAE,CAAC;IAC3B,4BAA4B,EAAE,CAAC;IAC/B,qBAAqB,EAAE,CAAC;IACxB,mBAAmB,EAAE,CAAC;IACtB,uBAAuB,EAAE,CAAC;IAC1B,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,CAAC;CACrB,CAAA"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resetLogger = exports.setLogger = exports.PCIMLibStateEnum = exports.IMLibStateEnum = exports.SessionState = exports.SignType = exports.TaskTimer = exports.Frame = exports.WebsocketSession = exports.StateSession = exports.Session = exports.IMSocketEvent = exports.IMSocket = void 0;
7
+ var Socket_1 = require("./Socket");
8
+ Object.defineProperty(exports, "IMSocket", { enumerable: true, get: function () { return __importDefault(Socket_1).default; } });
9
+ Object.defineProperty(exports, "IMSocketEvent", { enumerable: true, get: function () { return Socket_1.IMSocketEvent; } });
10
+ var Session_1 = require("./Session");
11
+ Object.defineProperty(exports, "Session", { enumerable: true, get: function () { return __importDefault(Session_1).default; } });
12
+ var StateSession_1 = require("./StateSession");
13
+ Object.defineProperty(exports, "StateSession", { enumerable: true, get: function () { return __importDefault(StateSession_1).default; } });
14
+ var WebsocketSession_1 = require("./WebsocketSession");
15
+ Object.defineProperty(exports, "WebsocketSession", { enumerable: true, get: function () { return __importDefault(WebsocketSession_1).default; } });
16
+ var Frame_1 = require("./Frame");
17
+ Object.defineProperty(exports, "Frame", { enumerable: true, get: function () { return __importDefault(Frame_1).default; } });
18
+ var TaskTimer_1 = require("./TaskTimer");
19
+ Object.defineProperty(exports, "TaskTimer", { enumerable: true, get: function () { return __importDefault(TaskTimer_1).default; } });
20
+ var Frame_2 = require("./Frame");
21
+ Object.defineProperty(exports, "SignType", { enumerable: true, get: function () { return Frame_2.SignType; } });
22
+ var constants_1 = require("./constants");
23
+ Object.defineProperty(exports, "SessionState", { enumerable: true, get: function () { return constants_1.SessionState; } });
24
+ Object.defineProperty(exports, "IMLibStateEnum", { enumerable: true, get: function () { return constants_1.IMLibStateEnum; } });
25
+ Object.defineProperty(exports, "PCIMLibStateEnum", { enumerable: true, get: function () { return constants_1.PCIMLibStateEnum; } });
26
+ var logger_1 = require("./logger");
27
+ Object.defineProperty(exports, "setLogger", { enumerable: true, get: function () { return logger_1.setLogger; } });
28
+ Object.defineProperty(exports, "resetLogger", { enumerable: true, get: function () { return logger_1.resetLogger; } });
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";;;;;;AAAA,mCAA6D;AAApD,mHAAA,OAAO,OAAY;AAAE,uGAAA,aAAa,OAAA;AAC3C,qCAA8C;AAArC,mHAAA,OAAO,OAAW;AAC3B,+CAAwD;AAA/C,6HAAA,OAAO,OAAgB;AAChC,uDAAgE;AAAvD,qIAAA,OAAO,OAAoB;AACpC,iCAA0C;AAAjC,+GAAA,OAAO,OAAS;AACzB,yCAAkD;AAAzC,uHAAA,OAAO,OAAa;AAC7B,iCAAkC;AAAzB,iGAAA,QAAQ,OAAA;AACjB,yCAA4E;AAAnE,yGAAA,YAAY,OAAA;AAAE,2GAAA,cAAc,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AACvD,mCAAiD;AAAxC,mGAAA,SAAS,OAAA;AAAE,qGAAA,WAAW,OAAA"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setLogger = setLogger;
4
+ exports.resetLogger = resetLogger;
5
+ const defaultLogger = {
6
+ log(...args) {
7
+ console.debug('[IM-WebSocket]', ...args);
8
+ },
9
+ warn(...args) {
10
+ console.warn('[IM-WebSocket]', ...args);
11
+ },
12
+ error(...args) {
13
+ console.error('[IM-WebSocket]', ...args);
14
+ },
15
+ };
16
+ let _target = defaultLogger;
17
+ const logger = {
18
+ log(...args) { _target.log(...args); },
19
+ warn(...args) { _target.warn(...args); },
20
+ error(...args) { _target.error(...args); },
21
+ };
22
+ function setLogger(custom) {
23
+ if (custom && typeof custom.log === 'function') {
24
+ _target = custom;
25
+ }
26
+ }
27
+ function resetLogger() {
28
+ _target = defaultLogger;
29
+ }
30
+ exports.default = logger;
31
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.js"],"names":[],"mappings":";;AAoBA,8BAIC;AAED,kCAEC;AA5BD,MAAM,aAAa,GAAG;IACpB,GAAG,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC,GAAG,IAAI;QACV,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACX,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAA;IAC1C,CAAC;CACF,CAAA;AAED,IAAI,OAAO,GAAG,aAAa,CAAA;AAE3B,MAAM,MAAM,GAAG;IACb,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;IACvC,KAAK,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;CAC1C,CAAA;AAED,SAAgB,SAAS,CAAC,MAAM;IAC9B,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC/C,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,GAAG,aAAa,CAAA;AACzB,CAAC;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1 @@
1
+ '{"type":"commonjs"}'
@@ -0,0 +1,20 @@
1
+ export namespace SignType {
2
+ let msg: number;
3
+ let hello: number;
4
+ let ping: number;
5
+ let pong: number;
6
+ let resume: number;
7
+ let reconnect: number;
8
+ let resumeAck: number;
9
+ let serverError: number;
10
+ }
11
+ export default class Frame {
12
+ static create(data: any): Frame;
13
+ static getPingFrame(sn: any): Frame;
14
+ constructor(s: any, sn: any, d: any);
15
+ s: any;
16
+ sn: any;
17
+ d: any;
18
+ toString(): string;
19
+ }
20
+ //# sourceMappingURL=Frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.d.ts","sourceRoot":"","sources":["../../src/Frame.js"],"names":[],"mappings":";;;;;;;;;;AAWA;IAOE,gCAEC;IAED,oCAEC;IAZD,qCAIC;IAHC,OAAU;IACV,QAAiB;IACjB,OAAU;IAWZ,mBAEC;CACF"}
@@ -0,0 +1,27 @@
1
+ export const SignType = {
2
+ msg: 0,
3
+ hello: 1,
4
+ ping: 2,
5
+ pong: 3,
6
+ resume: 4,
7
+ reconnect: 5,
8
+ resumeAck: 6,
9
+ serverError: 500,
10
+ };
11
+ export default class Frame {
12
+ constructor(s, sn, d) {
13
+ this.s = s;
14
+ this.sn = sn || 0;
15
+ this.d = d;
16
+ }
17
+ static create(data) {
18
+ return new Frame(data.s, data.sn, data.d);
19
+ }
20
+ static getPingFrame(sn) {
21
+ return new Frame(SignType.ping, sn);
22
+ }
23
+ toString() {
24
+ return JSON.stringify(this);
25
+ }
26
+ }
27
+ //# sourceMappingURL=Frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.js","sourceRoot":"","sources":["../../src/Frame.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,GAAG;CACjB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAI;QAChB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export default class Session extends EventEmitter<string | symbol, any> {
2
+ constructor(compress: any);
3
+ compress: null;
4
+ receiveData(data: any): void;
5
+ receiveFrame(frame: any): void;
6
+ }
7
+ import EventEmitter from 'eventemitter3';
8
+ //# sourceMappingURL=Session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../src/Session.js"],"names":[],"mappings":"AAKA;IAGE,2BAGC;IALD,eAAe;IAOf,6BAWC;IAED,+BAKC;CACF;yBA/BwB,eAAe"}
@@ -0,0 +1,31 @@
1
+ import pako from 'pako';
2
+ import EventEmitter from 'eventemitter3';
3
+ import Frame, { SignType } from './Frame';
4
+ import logger from './logger';
5
+ export default class Session extends EventEmitter {
6
+ constructor(compress) {
7
+ super();
8
+ this.compress = null;
9
+ this.compress = compress;
10
+ }
11
+ receiveData(data) {
12
+ try {
13
+ if (typeof data !== 'string') {
14
+ data = pako.inflate(data, { to: 'string' });
15
+ }
16
+ data = JSON.parse(data);
17
+ const frame = Frame.create(data);
18
+ this.receiveFrame(frame);
19
+ }
20
+ catch (err) {
21
+ logger.warn('ws message parse error', err);
22
+ }
23
+ }
24
+ receiveFrame(frame) {
25
+ this.emit('receive', frame);
26
+ if (frame.s == SignType.msg) {
27
+ this.emit('message', frame);
28
+ }
29
+ }
30
+ }
31
+ //# sourceMappingURL=Session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Session.js","sourceRoot":"","sources":["../../src/Session.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,YAAY;IAG/C,YAAY,QAAQ;QAClB,KAAK,EAAE,CAAA;QAHT,aAAQ,GAAG,IAAI,CAAA;QAIb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,WAAW,CAAC,IAAI;QACd,IAAI,CAAC;YACH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC7C,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAK;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC3B,IAAI,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,41 @@
1
+ export namespace IMSocketEvent {
2
+ let CONNECTED: string;
3
+ let MESSAGE: string;
4
+ let STATECHANGE: string;
5
+ let RECONNECT: string;
6
+ let ERROR: string;
7
+ let RECEIVE: string;
8
+ }
9
+ export default class IMSocket extends EventEmitter<string | symbol, any> {
10
+ constructor(options?: {});
11
+ _session: WebsocketSession | null;
12
+ _options: {
13
+ token: any;
14
+ gatewayURL: any;
15
+ compress: any;
16
+ gatewayProvider: any;
17
+ headerProvider: any;
18
+ queryProvider: any;
19
+ createSocket: any;
20
+ onGetGateway: any;
21
+ headers: any;
22
+ queryParams: any;
23
+ logger: any;
24
+ metricsHook: any;
25
+ };
26
+ get state(): number | undefined;
27
+ get sessionId(): string;
28
+ get gateway(): any;
29
+ get maxSn(): number;
30
+ get session(): WebsocketSession | null;
31
+ init(config: any): void;
32
+ start(): void;
33
+ stop(): void;
34
+ sendData(data: any): void;
35
+ send(frameType: any, data: any): void;
36
+ setState(to: any): void;
37
+ _setupEventListeners(): void;
38
+ }
39
+ import EventEmitter from 'eventemitter3';
40
+ import WebsocketSession from './WebsocketSession';
41
+ //# sourceMappingURL=Socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Socket.d.ts","sourceRoot":"","sources":["../../src/Socket.js"],"names":[],"mappings":";;;;;;;;AAcA;IACE,0BAyBC;IAvBC,kCAAoB;IACpB;;;;;;;;;;;;;MAiBC;IAOH,gCAEC;IAED,wBAEC;IAED,mBAEC;IAED,oBAEC;IAED,uCAEC;IAED,wBA4BC;IAED,cAKC;IAED,aAGC;IAED,0BAGC;IAED,sCAEC;IAED,wBAGC;IAED,6BAyBC;CACF;yBAhJwB,eAAe;6BACX,oBAAoB"}
@@ -0,0 +1,119 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import WebsocketSession from './WebsocketSession';
3
+ import { SessionState } from './constants';
4
+ import { setLogger } from './logger';
5
+ export const IMSocketEvent = {
6
+ CONNECTED: 'connected',
7
+ MESSAGE: 'message',
8
+ STATECHANGE: 'statechange',
9
+ RECONNECT: 'reconnect',
10
+ ERROR: 'error',
11
+ RECEIVE: 'receive',
12
+ };
13
+ export default class IMSocket extends EventEmitter {
14
+ constructor(options = {}) {
15
+ super();
16
+ this._session = null;
17
+ this._options = {
18
+ token: options.token || '',
19
+ gatewayURL: options.gatewayURL || '',
20
+ compress: options.compress ?? 1,
21
+ gatewayProvider: options.gatewayProvider || null,
22
+ headerProvider: options.headerProvider || null,
23
+ queryProvider: options.queryProvider || null,
24
+ createSocket: options.createSocket || null,
25
+ // legacy compat
26
+ onGetGateway: options.onGateway || options.onGetGateway || null,
27
+ headers: options.headers || null,
28
+ queryParams: options.queryParams || null,
29
+ logger: options.logger || null,
30
+ metricsHook: options.metricsHook || null,
31
+ };
32
+ if (this._options.logger) {
33
+ setLogger(this._options.logger);
34
+ }
35
+ }
36
+ get state() {
37
+ return this._session?.state;
38
+ }
39
+ get sessionId() {
40
+ return this._session?.sessionId || '';
41
+ }
42
+ get gateway() {
43
+ return this._session?.gateway || '';
44
+ }
45
+ get maxSn() {
46
+ return this._session?.maxSn || 0;
47
+ }
48
+ get session() {
49
+ return this._session;
50
+ }
51
+ init(config) {
52
+ if (config) {
53
+ Object.assign(this._options, config);
54
+ }
55
+ if (this._options.logger) {
56
+ setLogger(this._options.logger);
57
+ }
58
+ this._session = new WebsocketSession(this._options.token, this._options.gatewayURL, this._options.compress, {
59
+ gatewayProvider: this._options.gatewayProvider,
60
+ headerProvider: this._options.headerProvider,
61
+ queryProvider: this._options.queryProvider,
62
+ createSocket: this._options.createSocket,
63
+ onGetGateway: this._options.onGetGateway,
64
+ headers: this._options.headers,
65
+ queryParams: this._options.queryParams,
66
+ });
67
+ if (this._options.metricsHook) {
68
+ this._session.setMetricsHook(this._options.metricsHook);
69
+ }
70
+ this._setupEventListeners();
71
+ }
72
+ start() {
73
+ if (!this._session) {
74
+ this.init();
75
+ }
76
+ return this._session.start();
77
+ }
78
+ stop() {
79
+ if (!this._session)
80
+ return;
81
+ this._session.stop();
82
+ }
83
+ sendData(data) {
84
+ if (!this._session)
85
+ return;
86
+ this._session.sendData(data);
87
+ }
88
+ send(frameType, data) {
89
+ this.sendData(JSON.stringify({ s: frameType, d: data }));
90
+ }
91
+ setState(to) {
92
+ if (!this._session)
93
+ return;
94
+ this._session.setState(to);
95
+ }
96
+ _setupEventListeners() {
97
+ if (!this._session)
98
+ return;
99
+ this._session.on('message', (frame) => {
100
+ this.emit('message', frame);
101
+ });
102
+ this._session.on('reconnect', () => {
103
+ this.emit('reconnect');
104
+ });
105
+ this._session.on('statechange', ({ from, to }) => {
106
+ this.emit('statechange', { from, to });
107
+ if (to === SessionState.connected) {
108
+ this.emit('connected');
109
+ }
110
+ });
111
+ this._session.on('error', (error) => {
112
+ this.emit('error', error);
113
+ });
114
+ this._session.on('receive', (frame) => {
115
+ this.emit('receive', frame);
116
+ });
117
+ }
118
+ }
119
+ //# sourceMappingURL=Socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Socket.js","sourceRoot":"","sources":["../../src/Socket.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ export default class StateSession extends Session {
2
+ stateMap: {
3
+ [SessionState.init]: {
4
+ handler: string;
5
+ start: number;
6
+ max: number;
7
+ };
8
+ [SessionState.gateway]: {
9
+ handler: string;
10
+ start: number;
11
+ max: number;
12
+ maxRetry: number;
13
+ };
14
+ [SessionState.wsConnected]: {
15
+ handler: string;
16
+ start: number;
17
+ max: number;
18
+ };
19
+ [SessionState.connected]: {
20
+ handler: string;
21
+ start: number;
22
+ max: number;
23
+ };
24
+ [SessionState.retry]: {
25
+ handler: string;
26
+ start: number;
27
+ maxRetry: number;
28
+ };
29
+ };
30
+ stateConstraints: {
31
+ [SessionState.origin]: number[];
32
+ [SessionState.init]: number[];
33
+ [SessionState.gateway]: number[];
34
+ [SessionState.wsConnected]: number[];
35
+ [SessionState.connected]: number[];
36
+ [SessionState.retry]: number[];
37
+ };
38
+ timeout: number;
39
+ hbTimers: any[];
40
+ state: number;
41
+ sessionId: string;
42
+ maxSn: number;
43
+ recvQueue: {};
44
+ _metricsHook: any;
45
+ setMetricsHook(hook: any): void;
46
+ _metric(event: any, data: any): void;
47
+ start(): void;
48
+ taskTimer: TaskTimer | undefined;
49
+ getGateway: (next: any, task: any) => void;
50
+ getGateWayOk: (url: any) => void;
51
+ gateway: any;
52
+ connectWs: (next: any, task: any) => void;
53
+ connectWsOk: () => void;
54
+ connectWsFail: () => void;
55
+ helloFail: () => void;
56
+ receiveHello: (frame: any) => void;
57
+ sendHeartBeat: (next: any, task: any) => void;
58
+ hbTimeout: () => void;
59
+ receivePong: (frame: any) => void;
60
+ resumeOk: () => void;
61
+ reconnect: () => boolean;
62
+ processEvent(frame: any): void;
63
+ processDataFrame(frame: any): void;
64
+ canChange(from: any, to: any): boolean;
65
+ setState: (to: any) => void;
66
+ _stop(): void;
67
+ }
68
+ import Session from './Session';
69
+ import { SessionState } from './constants';
70
+ import TaskTimer from './TaskTimer';
71
+ //# sourceMappingURL=StateSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateSession.d.ts","sourceRoot":"","sources":["../../src/StateSession.js"],"names":[],"mappings":"AAMA;IACE;QACE,CAAC,YAAY,CAAC,IAAI,CAAC;;;;UAIlB;QACD,CAAC,YAAY,CAAC,OAAO,CAAC;;;;;UAKrB;QACD,CAAC,YAAY,CAAC,WAAW,CAAC;;;;UAIzB;QACD,CAAC,YAAY,CAAC,SAAS,CAAC;;;;UAIvB;QACD,CAAC,YAAY,CAAC,KAAK,CAAC;;;;UAInB;MACF;IAED;QACE,CAAC,YAAY,CAAC,MAAM,CAAC,WAAqB;QAC1C,CAAC,YAAY,CAAC,IAAI,CAAC,WAAwB;QAC3C,CAAC,YAAY,CAAC,OAAO,CAAC,WAA+C;QACrE,CAAC,YAAY,CAAC,WAAW,CAAC,WAAmE;QAC7F,CAAC,YAAY,CAAC,SAAS,CAAC,WAIvB;QACD,CAAC,YAAY,CAAC,KAAK,CAAC,WAAmE;MACxF;IAIC,gBAAgB;IA2GlB,gBAAa;IAzGX,cAAgC;IAChC,kBAAmB;IACnB,cAAc;IACd,cAAmB;IACnB,kBAAwB;IAG1B,gCAIC;IAED,qCAMC;IAED,cAIC;IAFC,iCAAgC;IAIlC,aAAc,SAAI,EAAE,SAAI,UAevB;IAED,eAAgB,QAAG,UAIlB;IAFC,aAAkB;IAIpB,YAAa,SAAI,EAAE,SAAI,UAqBtB;IAED,wBAGC;IAED,0BAGC;IAED,sBAGC;IAED,eAAgB,UAAK,UAepB;IAID,gBAAiB,SAAI,EAAE,SAAI,UAkB1B;IAED,sBAiBC;IAED,cAAe,UAAK,UAQnB;IAED,qBAKC;IAED,yBAKC;IAED,+BAqBC;IAED,mCAEC;IAsBD,uCAKC;IAED,WAAY,OAAE,UAyBb;IAED,cAQC;CACF;oBAzTmB,WAAW;6BAIF,aAAa;sBAHpB,aAAa"}