worker-websocket-ctrl
Version:
Share a websocket using a Worker/SharedWorker communicating through comlink
28 lines (27 loc) • 1.15 kB
TypeScript
import * as Comlink from 'comlink';
import type { WorkerWsController } from './worker-websocket-controller';
export declare class WorkerWsSubscriptions<T extends string = string> {
private api;
private createWorker;
private getProtocolsProxy?;
private autoUnsubscribeBinded?;
private pathByResource;
private resourceByPath;
constructor(options: {
api: string | (() => string);
createWorker: (resource: T) => Worker | SharedWorker | undefined;
getProtocols?: (resource: T) => Promise<string[] | null>;
autoUnsubscribe?: (this: WorkerWsSubscriptions<T>, ctx: unknown, unsubscribe: () => void) => void;
});
workers: Map<T, Comlink.Remote<WorkerWsController> | undefined>;
subscriptions: Map<T, Map<unknown, {
unsubscribe: () => void;
}>>;
subscribe(ctx: unknown, resource: T, onEvent: (msg: string) => void, hooks?: {
onConnect?: () => void;
onDisconnect?: () => void;
onClosed?: () => void;
}): Promise<((msg: string) => Promise<void>) | undefined>;
unsubscribe(ctx: unknown, ...resources: T[]): void;
private checkSubscriptions;
}