UNPKG

worker-websocket-ctrl

Version:

Share a websocket using a Worker/SharedWorker communicating through comlink

28 lines (27 loc) 1.16 kB
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: string) => 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; }