UNPKG

@push.rocks/smartsocket

Version:

Provides easy and secure websocket communication mechanisms, including server and client implementation, function call routing, connection management, and tagging.

59 lines (58 loc) 2.08 kB
import type * as http from 'http'; import type * as https from 'https'; export type { http, https }; import type * as wsTypes from 'ws'; export declare namespace ws { type WebSocket = wsTypes.WebSocket; type WebSocketServer = wsTypes.WebSocketServer; type RawData = wsTypes.RawData; } /** * Unified WebSocket type supporting both browser and Node.js environments */ export type TWebSocket = WebSocket | ws.WebSocket; /** * Message event type for WebSocket messages (browser and Node.js compatible) */ export type TMessageEvent = MessageEvent | { data: string; }; /** * WebSocket-like interface for adapters (e.g., smartserve peer adapter) */ export interface IWebSocketLike { readyState: number; send(data: string): void; close(code?: number, reason?: string): void; addEventListener(event: 'message', listener: (event: TMessageEvent) => void): void; addEventListener(event: 'close', listener: () => void): void; addEventListener(event: 'error', listener: () => void): void; removeEventListener?(event: string, listener: (...args: any[]) => void): void; } export interface ISmartserveWebSocketPeer { id: string; url: string; readyState: 0 | 1 | 2 | 3; protocol: string; extensions: string; send(data: string): void; sendBinary(data: Uint8Array | ArrayBuffer): void; close(code?: number, reason?: string): void; ping(data?: Uint8Array): void; terminate(): void; context: any; data: Map<string, unknown>; tags: Set<string>; } export interface ISmartserveWebSocketMessage { type: 'text' | 'binary'; text?: string; data?: Uint8Array; size: number; } export interface ISmartserveWebSocketHooks { onOpen?: (peer: ISmartserveWebSocketPeer) => void | Promise<void>; onMessage?: (peer: ISmartserveWebSocketPeer, message: ISmartserveWebSocketMessage) => void | Promise<void>; onClose?: (peer: ISmartserveWebSocketPeer, code: number, reason: string) => void | Promise<void>; onError?: (peer: ISmartserveWebSocketPeer, error: Error) => void | Promise<void>; }