chore(): ws client tidying and misc improvements
This commit is contained in:
@@ -908,7 +908,11 @@ export abstract class BaseWebsocketClient<
|
||||
/**
|
||||
* Try sending a string event on a WS connection (identified by the WS Key)
|
||||
*/
|
||||
public tryWsSend(wsKey: TWSKey, wsMessage: string) {
|
||||
public tryWsSend(
|
||||
wsKey: TWSKey,
|
||||
wsMessage: string,
|
||||
throwExceptions?: boolean,
|
||||
) {
|
||||
try {
|
||||
this.logger.trace('Sending upstream ws message: ', {
|
||||
...WS_LOGGER_CATEGORY,
|
||||
@@ -934,6 +938,9 @@ export abstract class BaseWebsocketClient<
|
||||
wsKey,
|
||||
exception: e,
|
||||
});
|
||||
if (throwExceptions) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
CategoryV5,
|
||||
WebsocketClientOptions,
|
||||
WsKey,
|
||||
WsTopic,
|
||||
} from '../../types';
|
||||
|
||||
import { DefaultLogger } from '../logger';
|
||||
@@ -660,3 +661,43 @@ export function getNormalisedTopicRequests(
|
||||
}
|
||||
return normalisedTopicRequests;
|
||||
}
|
||||
|
||||
/**
|
||||
* Groups topics in request into per-wsKey groups
|
||||
* @param normalisedTopicRequests
|
||||
* @param wsKey
|
||||
* @param isPrivateTopic
|
||||
* @returns
|
||||
*/
|
||||
export function getTopicsPerWSKey(
|
||||
normalisedTopicRequests: WsTopicRequest[],
|
||||
wsKey?: WsKey,
|
||||
isPrivateTopic?: boolean,
|
||||
): {
|
||||
[key in WsKey]?: WsTopicRequest<WsTopic>[];
|
||||
} {
|
||||
const perWsKeyTopics: { [key in WsKey]?: WsTopicRequest<WsTopic>[] } = {};
|
||||
|
||||
// Sort into per wsKey arrays, in case topics are mixed together for different wsKeys
|
||||
for (const topicRequest of normalisedTopicRequests) {
|
||||
const derivedWsKey =
|
||||
wsKey ||
|
||||
getWsKeyForTopic(
|
||||
this.options.market,
|
||||
topicRequest.topic,
|
||||
isPrivateTopic,
|
||||
topicRequest.category,
|
||||
);
|
||||
|
||||
if (
|
||||
!perWsKeyTopics[derivedWsKey] ||
|
||||
!Array.isArray(perWsKeyTopics[derivedWsKey])
|
||||
) {
|
||||
perWsKeyTopics[derivedWsKey] = [];
|
||||
}
|
||||
|
||||
perWsKeyTopics[derivedWsKey]!.push(topicRequest);
|
||||
}
|
||||
|
||||
return perWsKeyTopics;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user