@openshift-console/dynamic-plugin-sdk
Version:
Provides core APIs, types and utilities used by dynamic plugins at runtime.
74 lines (73 loc) • 2.22 kB
TypeScript
export type WSOptions = {
host: string;
path: string;
subprotocols: string[];
reconnect?: boolean;
jsonParse?: boolean;
bufferMax?: number;
bufferFlushInterval?: number;
timeout?: number;
};
type GenericHandler<T = any> = (data: T) => void;
export type OpenHandler = GenericHandler<undefined>;
export type CloseHandler = GenericHandler<CloseEvent>;
export type ErrorHandler = GenericHandler<Event>;
/**
* The WebSocket can send JSON that is parsed, or we just send it through as-is
*/
export type MessageDataType = object | any;
export type MessageHandler = GenericHandler<MessageDataType>;
/**
* Data is provided potentially by .destroy() caller.
*/
export type DestroyHandler = GenericHandler<unknown | undefined>;
export type BulkMessageHandler = GenericHandler<MessageDataType>;
/**
* @class WebSocket factory and utility wrapper.
*/
export declare class WSFactory {
private readonly id;
private paused;
private handlers;
private state;
private messageBuffer;
private connectionAttempt;
private readonly flushCanceler;
private options;
private bufferMax;
private ws;
/**
* @param id - unique id for the WebSocket.
* @param options - websocket options to initate the WebSocket with.
*/
constructor(id: string, options: WSOptions);
private reconnect;
private connect;
private registerHandler;
/**
* Invoke all registered handler callbacks for a given event type.
*/
private invokeHandlers;
/**
* Triggers event to be buffered or invoked depending on config.
*/
private triggerEvent;
onmessage(fn: MessageHandler): this;
onbulkmessage(fn: BulkMessageHandler): this;
onerror(fn: ErrorHandler): this;
onopen(fn: OpenHandler): this;
onclose(fn: CloseHandler): this;
ondestroy(fn: DestroyHandler): this;
flushMessageBuffer(): void;
/**
* Pausing prevents any buffer flushing until unpaused.
*/
pause(): void;
unpause(): void;
isPaused(): boolean;
getState(): string;
bufferSize(): number;
destroy(eventData?: unknown): void;
send(data: Parameters<typeof WebSocket.prototype.send>[0]): void;
}
export {};