pulsar_sdk_js
Version:
A convenient way for you to interact with Pulsar's Third Party APIs, using typified classes.
43 lines (42 loc) • 1.61 kB
TypeScript
/// <reference types="ws" />
import { APIError } from "../types/errors";
import WebSocket, { MessageEvent } from 'isomorphic-ws';
import { BalancesMessage, TimeseriesMessage, MessageResponse } from "../types/websocket_types";
interface MessagePromise<T> {
promise: Promise<T>;
resolve: (value: T | null) => void;
reject: (reason?: APIError) => void;
}
declare class WebsocketClient {
base_url: string;
callbackHandlers: {
[requestID: string]: (response: MessageEvent) => void;
};
messagePromises: {
[requestID: string]: MessagePromise<any | null>[];
};
websocketIsOpening: boolean;
websocketIsClosing: boolean;
websocket_conn: WebSocket | null;
api_key: string;
constructor(api_key: string, base_url: string, use_ssl: boolean);
transitionToOpen(): Promise<void>;
transitionToClosed(): Promise<void>;
createNewWebSocketConnection(attempt?: number): Promise<WebSocket>;
private handleWebSocketClosure;
private closeWebsocket;
private sendMessage;
handleResponse<T extends BalancesMessage | TimeseriesMessage>(requestID: string, msg: T, finishedEventType: string): AsyncGenerator<MessageResponse<T>>;
private setupCallbackHandler;
private sendMessageAndProcessMessages;
private waitForMessageOrTimeout;
private performFinalCleanup;
private processPayload;
private getEventDict;
private createMessagePromise;
private cleanupRequest;
private waitForState;
private waitForWebSocketClosureCompletion;
private waitForWebSocketOpeningCompletion;
}
export default WebsocketClient;