@reyaxyz/api-sdk 0.84.0 → 0.85.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/dist/clients/socket-client.js +19 -3
- package/dist/clients/socket-client.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/clients/socket-client.d.ts +39 -4
- package/dist/types/clients/socket-client.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/clients/socket-client.ts +44 -5
- package/src/index.ts +6 -1
|
@@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.SocketClient = exports.IncomingMessageTypes = void 0;
|
|
17
|
+
exports.SocketClient = exports.OutgoingMessageType = exports.IncomingMessageTypes = void 0;
|
|
18
18
|
var isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
|
|
19
19
|
var common_1 = require("@reyaxyz/common");
|
|
20
20
|
var OutgoingMessageTypes;
|
|
@@ -36,6 +36,16 @@ var IncomingMessageTypes;
|
|
|
36
36
|
IncomingMessageTypes["CHANNEL_BATCH_DATA"] = "channel_batch_data";
|
|
37
37
|
IncomingMessageTypes["PONG"] = "pong";
|
|
38
38
|
})(IncomingMessageTypes || (exports.IncomingMessageTypes = IncomingMessageTypes = {}));
|
|
39
|
+
var OutgoingMessageType;
|
|
40
|
+
(function (OutgoingMessageType) {
|
|
41
|
+
OutgoingMessageType["ERROR"] = "error";
|
|
42
|
+
OutgoingMessageType["CONNECTED"] = "connected";
|
|
43
|
+
OutgoingMessageType["SUBSCRIBED"] = "subscribed";
|
|
44
|
+
OutgoingMessageType["UNSUBSCRIBED"] = "unsubscribed";
|
|
45
|
+
OutgoingMessageType["CHANNEL_DATA"] = "channel_data";
|
|
46
|
+
OutgoingMessageType["CHANNEL_BATCH_DATA"] = "channel_batch_data";
|
|
47
|
+
OutgoingMessageType["PONG"] = "pong";
|
|
48
|
+
})(OutgoingMessageType || (exports.OutgoingMessageType = OutgoingMessageType = {}));
|
|
39
49
|
var SocketClient = /** @class */ (function () {
|
|
40
50
|
function SocketClient(config) {
|
|
41
51
|
this.pingInterval = 30000;
|
|
@@ -86,8 +96,14 @@ var SocketClient = /** @class */ (function () {
|
|
|
86
96
|
}
|
|
87
97
|
else {
|
|
88
98
|
this.lastMessageTime = Date.now();
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
try {
|
|
100
|
+
var parsedMessage = JSON.parse(event.data);
|
|
101
|
+
if (typeof this.onMessageCallback === 'function') {
|
|
102
|
+
this.onMessageCallback(parsedMessage);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.error('Error parsing message', error);
|
|
91
107
|
}
|
|
92
108
|
}
|
|
93
109
|
this.restartPingInterval();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.js","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"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","sourcesContent":["import WebSocket, { MessageEvent } from 'isomorphic-ws';\n\nimport {\n API_CLIENT_CONFIGS,\n CandlesResolution,\n ServiceConfig,\n} from '@reyaxyz/common';\n\nenum OutgoingMessageTypes {\n PING = 'ping',\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n\nenum SocketChannels {\n CANDLES = 'candles',\n}\n\nexport enum IncomingMessageTypes {\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n ERROR = 'error',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\n\nexport interface SocketClientConfig {\n environment: ServiceConfig['environment'];\n onOpen: () => void;\n onClose: () => void;\n onMessage: (event: MessageEvent) => void;\n}\n\nexport class SocketClient {\n private url: string;\n private ws?: WebSocket;\n private onOpenCallback?: () => void;\n private onCloseCallback?: () => void;\n private onMessageCallback?: (event: MessageEvent) => void;\n private pingInterval: number = 30_000;\n private lastMessageTime: number = Date.now();\n private pingIntervalId?: NodeJS.Timeout;\n constructor(config: SocketClientConfig) {\n this.onOpenCallback = config.onOpen;\n this.onCloseCallback = config.onClose;\n this.onMessageCallback = config.onMessage;\n this.url = (\n API_CLIENT_CONFIGS[config.environment] || API_CLIENT_CONFIGS['test']\n ).webSocketEndpoint;\n }\n\n connect(): void {\n this.ws = new WebSocket(this.url);\n this.ws.addEventListener('open', this.handleOpen.bind(this));\n this.ws.addEventListener('close', this.handleClose.bind(this));\n this.ws.addEventListener('message', this.handleMessage.bind(this));\n }\n\n /**\n * @description Close the websocket connection.\n *\n */\n close(): void {\n this.ws?.close();\n this.ws = undefined;\n }\n\n /**\n * @description Send data to the websocket connection.\n *\n */\n send(data: string): void {\n this.ws?.send(data);\n }\n\n private handleOpen(): void {\n if (this.onOpenCallback) {\n this.onOpenCallback();\n }\n this.restartPingInterval();\n }\n\n private handleClose(): void {\n if (this.onCloseCallback) {\n this.onCloseCallback();\n }\n clearInterval(this.pingIntervalId);\n }\n\n private handleMessage(event: MessageEvent): void {\n if (event.data === 'PING') {\n this.send('PONG');\n } else {\n this.lastMessageTime = Date.now();\n if (this.onMessageCallback) {\n this.onMessageCallback(event);\n }\n }\n this.restartPingInterval();\n }\n\n private restartPingInterval(): void {\n clearInterval(this.pingIntervalId);\n this.pingIntervalId = setInterval(() => {\n const elapsedTime = Date.now() - this.lastMessageTime;\n if (elapsedTime > this.pingInterval) {\n const message = {\n type: OutgoingMessageTypes.PING,\n };\n this.send(JSON.stringify(message));\n }\n }, this.pingInterval);\n }\n\n /**\n * @description Set callback when the socket is opened.\n *\n */\n set onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n /**\n * @description Set callback when the socket is closed.\n *\n */\n set onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n /**\n * @description Set callback when the socket receives a message.\n *\n */\n set onMessage(callback: (event: MessageEvent) => void) {\n this.onMessageCallback = callback;\n }\n\n /**\n * @description Send a subscribe message to the websocket connection.\n *\n */\n subscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.SUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n\n /**\n * @description Send an unsubscribe message to the websocket connection.\n *\n */\n unsubscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.UNSUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n /**\n * @description Subscribe to candles channel\n * for a specific market and resolution.\n *\n */\n subscribeToCandles(\n marketTicker: string,\n resolution: CandlesResolution,\n ): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${marketTicker}/${resolution}`,\n batched: true,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from candles channel\n * for a specific market and resolution.\n */\n unsubscribeFromCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n };\n this.unsubscribe(channel, params);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"socket-client.js","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"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","sourcesContent":["import WebSocket, { MessageEvent } from 'isomorphic-ws';\n\nimport {\n API_CLIENT_CONFIGS,\n Candle,\n CandlesResolution,\n ServiceConfig,\n} from '@reyaxyz/common';\n\nenum OutgoingMessageTypes {\n PING = 'ping',\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n\nenum SocketChannels {\n CANDLES = 'candles',\n}\n\nexport enum IncomingMessageTypes {\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n ERROR = 'error',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\nexport enum OutgoingMessageType {\n ERROR = 'error',\n CONNECTED = 'connected',\n SUBSCRIBED = 'subscribed',\n UNSUBSCRIBED = 'unsubscribed',\n CHANNEL_DATA = 'channel_data',\n CHANNEL_BATCH_DATA = 'channel_batch_data',\n PONG = 'pong',\n}\nexport interface OutgoingMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n}\nexport interface SocketMessage {\n message_id: number;\n connection_id: string;\n type: OutgoingMessageType;\n channel?: SocketChannels;\n contents?: unknown;\n id?: string;\n}\n\nexport interface CandleMessage extends SocketMessage {\n type: OutgoingMessageType;\n connection_id: string;\n message_id: number;\n channel: SocketChannels.CANDLES;\n id: string;\n contents: {\n candles: Candle[];\n };\n}\n\nexport interface SocketClientConfig {\n environment: ServiceConfig['environment'];\n onOpen: () => void;\n onClose: () => void;\n onMessage: (event: SocketMessage) => void;\n}\n\nexport class SocketClient {\n private url: string;\n private ws?: WebSocket;\n private onOpenCallback?: () => void;\n private onCloseCallback?: () => void;\n private onMessageCallback?: (event: SocketMessage) => void;\n private pingInterval: number = 30_000;\n private lastMessageTime: number = Date.now();\n private pingIntervalId?: NodeJS.Timeout;\n constructor(config: SocketClientConfig) {\n this.onOpenCallback = config.onOpen;\n this.onCloseCallback = config.onClose;\n this.onMessageCallback = config.onMessage;\n this.url = (\n API_CLIENT_CONFIGS[config.environment] || API_CLIENT_CONFIGS['test']\n ).webSocketEndpoint;\n }\n\n connect(): void {\n this.ws = new WebSocket(this.url);\n this.ws.addEventListener('open', this.handleOpen.bind(this));\n this.ws.addEventListener('close', this.handleClose.bind(this));\n this.ws.addEventListener('message', this.handleMessage.bind(this));\n }\n\n /**\n * @description Close the websocket connection.\n *\n */\n close(): void {\n this.ws?.close();\n this.ws = undefined;\n }\n\n /**\n * @description Send data to the websocket connection.\n *\n */\n send(data: string): void {\n this.ws?.send(data);\n }\n\n private handleOpen(): void {\n if (this.onOpenCallback) {\n this.onOpenCallback();\n }\n this.restartPingInterval();\n }\n\n private handleClose(): void {\n if (this.onCloseCallback) {\n this.onCloseCallback();\n }\n clearInterval(this.pingIntervalId);\n }\n\n private handleMessage(event: MessageEvent): void {\n if (event.data === 'PING') {\n this.send('PONG');\n } else {\n this.lastMessageTime = Date.now();\n try {\n const parsedMessage: SocketMessage = JSON.parse(event.data as string);\n if (typeof this.onMessageCallback === 'function') {\n this.onMessageCallback(parsedMessage);\n }\n } catch (error) {\n console.error('Error parsing message', error);\n }\n }\n this.restartPingInterval();\n }\n\n private restartPingInterval(): void {\n clearInterval(this.pingIntervalId);\n this.pingIntervalId = setInterval(() => {\n const elapsedTime = Date.now() - this.lastMessageTime;\n if (elapsedTime > this.pingInterval) {\n const message = {\n type: OutgoingMessageTypes.PING,\n };\n this.send(JSON.stringify(message));\n }\n }, this.pingInterval);\n }\n\n /**\n * @description Set callback when the socket is opened.\n *\n */\n set onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n /**\n * @description Set callback when the socket is closed.\n *\n */\n set onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n /**\n * @description Set callback when the socket receives a message.\n *\n */\n set onMessage(callback: (event: SocketMessage) => void) {\n this.onMessageCallback = callback;\n }\n\n /**\n * @description Send a subscribe message to the websocket connection.\n *\n */\n subscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.SUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n\n /**\n * @description Send an unsubscribe message to the websocket connection.\n *\n */\n unsubscribe(channel: string, params?: object): void {\n const message = {\n type: OutgoingMessageTypes.UNSUBSCRIBE,\n channel,\n ...params,\n };\n this.send(JSON.stringify(message));\n }\n /**\n * @description Subscribe to candles channel\n * for a specific market and resolution.\n *\n */\n subscribeToCandles(\n marketTicker: string,\n resolution: CandlesResolution,\n ): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${marketTicker}/${resolution}`,\n batched: true,\n };\n this.subscribe(channel, params);\n }\n\n /**\n * @description Unsubscribe from candles channel\n * for a specific market and resolution.\n */\n unsubscribeFromCandles(market: string, resolution: CandlesResolution): void {\n const channel = SocketChannels.CANDLES;\n const params = {\n id: `${market}/${resolution}`,\n };\n this.unsubscribe(channel, params);\n }\n}\n"]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAAiD;AAAxC,uGAAA,SAAS,OAAA;AAClB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAAiD;AAAxC,uGAAA,SAAS,OAAA;AAClB,yDAKiC;AAJ/B,6GAAA,YAAY,OAAA;AAKd,kDAAgC","sourcesContent":["export { ApiClient } from './clients/api-client';\nexport {\n SocketClient,\n SocketClientConfig,\n SocketMessage,\n CandleMessage,\n} from './clients/socket-client';\nexport * from './clients/types';\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Candle, CandlesResolution, ServiceConfig } from '@reyaxyz/common';
|
|
2
|
+
declare enum SocketChannels {
|
|
3
|
+
CANDLES = "candles"
|
|
4
|
+
}
|
|
3
5
|
export declare enum IncomingMessageTypes {
|
|
4
6
|
CONNECTED = "connected",
|
|
5
7
|
SUBSCRIBED = "subscribed",
|
|
@@ -8,11 +10,43 @@ export declare enum IncomingMessageTypes {
|
|
|
8
10
|
CHANNEL_BATCH_DATA = "channel_batch_data",
|
|
9
11
|
PONG = "pong"
|
|
10
12
|
}
|
|
13
|
+
export declare enum OutgoingMessageType {
|
|
14
|
+
ERROR = "error",
|
|
15
|
+
CONNECTED = "connected",
|
|
16
|
+
SUBSCRIBED = "subscribed",
|
|
17
|
+
UNSUBSCRIBED = "unsubscribed",
|
|
18
|
+
CHANNEL_DATA = "channel_data",
|
|
19
|
+
CHANNEL_BATCH_DATA = "channel_batch_data",
|
|
20
|
+
PONG = "pong"
|
|
21
|
+
}
|
|
22
|
+
export interface OutgoingMessage {
|
|
23
|
+
type: OutgoingMessageType;
|
|
24
|
+
connection_id: string;
|
|
25
|
+
message_id: number;
|
|
26
|
+
}
|
|
27
|
+
export interface SocketMessage {
|
|
28
|
+
message_id: number;
|
|
29
|
+
connection_id: string;
|
|
30
|
+
type: OutgoingMessageType;
|
|
31
|
+
channel?: SocketChannels;
|
|
32
|
+
contents?: unknown;
|
|
33
|
+
id?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface CandleMessage extends SocketMessage {
|
|
36
|
+
type: OutgoingMessageType;
|
|
37
|
+
connection_id: string;
|
|
38
|
+
message_id: number;
|
|
39
|
+
channel: SocketChannels.CANDLES;
|
|
40
|
+
id: string;
|
|
41
|
+
contents: {
|
|
42
|
+
candles: Candle[];
|
|
43
|
+
};
|
|
44
|
+
}
|
|
11
45
|
export interface SocketClientConfig {
|
|
12
46
|
environment: ServiceConfig['environment'];
|
|
13
47
|
onOpen: () => void;
|
|
14
48
|
onClose: () => void;
|
|
15
|
-
onMessage: (event:
|
|
49
|
+
onMessage: (event: SocketMessage) => void;
|
|
16
50
|
}
|
|
17
51
|
export declare class SocketClient {
|
|
18
52
|
private url;
|
|
@@ -53,7 +87,7 @@ export declare class SocketClient {
|
|
|
53
87
|
* @description Set callback when the socket receives a message.
|
|
54
88
|
*
|
|
55
89
|
*/
|
|
56
|
-
set onMessage(callback: (event:
|
|
90
|
+
set onMessage(callback: (event: SocketMessage) => void);
|
|
57
91
|
/**
|
|
58
92
|
* @description Send a subscribe message to the websocket connection.
|
|
59
93
|
*
|
|
@@ -76,4 +110,5 @@ export declare class SocketClient {
|
|
|
76
110
|
*/
|
|
77
111
|
unsubscribeFromCandles(market: string, resolution: CandlesResolution): void;
|
|
78
112
|
}
|
|
113
|
+
export {};
|
|
79
114
|
//# sourceMappingURL=socket-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.d.ts","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socket-client.d.ts","sourceRoot":"/","sources":["clients/socket-client.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { ApiClient } from './clients/api-client';
|
|
2
|
-
export { SocketClient, SocketClientConfig } from './clients/socket-client';
|
|
2
|
+
export { SocketClient, SocketClientConfig, SocketMessage, CandleMessage, } from './clients/socket-client';
|
|
3
3
|
export * from './clients/types';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reyaxyz/api-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"generate:coverage-badges": "npx istanbul-badges-readme --silent"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@reyaxyz/common": "0.93.
|
|
36
|
+
"@reyaxyz/common": "0.93.1",
|
|
37
37
|
"bignumber.js": "^9.1.2",
|
|
38
38
|
"isomorphic-ws": "^5.0.0",
|
|
39
39
|
"ws": "^8.16.0"
|
|
40
40
|
},
|
|
41
41
|
"packageManager": "pnpm@8.3.1",
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "dd557de7d8696f9656d0cb396d80f6a79ddba828",
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/ws": "8.5.10"
|
|
45
45
|
}
|
|
@@ -2,6 +2,7 @@ import WebSocket, { MessageEvent } from 'isomorphic-ws';
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
API_CLIENT_CONFIGS,
|
|
5
|
+
Candle,
|
|
5
6
|
CandlesResolution,
|
|
6
7
|
ServiceConfig,
|
|
7
8
|
} from '@reyaxyz/common';
|
|
@@ -24,12 +25,45 @@ export enum IncomingMessageTypes {
|
|
|
24
25
|
CHANNEL_BATCH_DATA = 'channel_batch_data',
|
|
25
26
|
PONG = 'pong',
|
|
26
27
|
}
|
|
28
|
+
export enum OutgoingMessageType {
|
|
29
|
+
ERROR = 'error',
|
|
30
|
+
CONNECTED = 'connected',
|
|
31
|
+
SUBSCRIBED = 'subscribed',
|
|
32
|
+
UNSUBSCRIBED = 'unsubscribed',
|
|
33
|
+
CHANNEL_DATA = 'channel_data',
|
|
34
|
+
CHANNEL_BATCH_DATA = 'channel_batch_data',
|
|
35
|
+
PONG = 'pong',
|
|
36
|
+
}
|
|
37
|
+
export interface OutgoingMessage {
|
|
38
|
+
type: OutgoingMessageType;
|
|
39
|
+
connection_id: string;
|
|
40
|
+
message_id: number;
|
|
41
|
+
}
|
|
42
|
+
export interface SocketMessage {
|
|
43
|
+
message_id: number;
|
|
44
|
+
connection_id: string;
|
|
45
|
+
type: OutgoingMessageType;
|
|
46
|
+
channel?: SocketChannels;
|
|
47
|
+
contents?: unknown;
|
|
48
|
+
id?: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface CandleMessage extends SocketMessage {
|
|
52
|
+
type: OutgoingMessageType;
|
|
53
|
+
connection_id: string;
|
|
54
|
+
message_id: number;
|
|
55
|
+
channel: SocketChannels.CANDLES;
|
|
56
|
+
id: string;
|
|
57
|
+
contents: {
|
|
58
|
+
candles: Candle[];
|
|
59
|
+
};
|
|
60
|
+
}
|
|
27
61
|
|
|
28
62
|
export interface SocketClientConfig {
|
|
29
63
|
environment: ServiceConfig['environment'];
|
|
30
64
|
onOpen: () => void;
|
|
31
65
|
onClose: () => void;
|
|
32
|
-
onMessage: (event:
|
|
66
|
+
onMessage: (event: SocketMessage) => void;
|
|
33
67
|
}
|
|
34
68
|
|
|
35
69
|
export class SocketClient {
|
|
@@ -37,7 +71,7 @@ export class SocketClient {
|
|
|
37
71
|
private ws?: WebSocket;
|
|
38
72
|
private onOpenCallback?: () => void;
|
|
39
73
|
private onCloseCallback?: () => void;
|
|
40
|
-
private onMessageCallback?: (event:
|
|
74
|
+
private onMessageCallback?: (event: SocketMessage) => void;
|
|
41
75
|
private pingInterval: number = 30_000;
|
|
42
76
|
private lastMessageTime: number = Date.now();
|
|
43
77
|
private pingIntervalId?: NodeJS.Timeout;
|
|
@@ -93,8 +127,13 @@ export class SocketClient {
|
|
|
93
127
|
this.send('PONG');
|
|
94
128
|
} else {
|
|
95
129
|
this.lastMessageTime = Date.now();
|
|
96
|
-
|
|
97
|
-
|
|
130
|
+
try {
|
|
131
|
+
const parsedMessage: SocketMessage = JSON.parse(event.data as string);
|
|
132
|
+
if (typeof this.onMessageCallback === 'function') {
|
|
133
|
+
this.onMessageCallback(parsedMessage);
|
|
134
|
+
}
|
|
135
|
+
} catch (error) {
|
|
136
|
+
console.error('Error parsing message', error);
|
|
98
137
|
}
|
|
99
138
|
}
|
|
100
139
|
this.restartPingInterval();
|
|
@@ -133,7 +172,7 @@ export class SocketClient {
|
|
|
133
172
|
* @description Set callback when the socket receives a message.
|
|
134
173
|
*
|
|
135
174
|
*/
|
|
136
|
-
set onMessage(callback: (event:
|
|
175
|
+
set onMessage(callback: (event: SocketMessage) => void) {
|
|
137
176
|
this.onMessageCallback = callback;
|
|
138
177
|
}
|
|
139
178
|
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export { ApiClient } from './clients/api-client';
|
|
2
|
-
export {
|
|
2
|
+
export {
|
|
3
|
+
SocketClient,
|
|
4
|
+
SocketClientConfig,
|
|
5
|
+
SocketMessage,
|
|
6
|
+
CandleMessage,
|
|
7
|
+
} from './clients/socket-client';
|
|
3
8
|
export * from './clients/types';
|