UNPKG

hono

Version:

Web framework built on Web Standards

65 lines (64 loc) 2.17 kB
/** * @module * WebSocket Helper for Hono. */ import type { Context } from '../../context'; import type { MiddlewareHandler } from '../../types'; /** * WebSocket Event Listeners type */ export interface WSEvents<T = unknown> { onOpen?: (evt: Event, ws: WSContext<T>) => void; onMessage?: (evt: MessageEvent<WSMessageReceive>, ws: WSContext<T>) => void; onClose?: (evt: CloseEvent, ws: WSContext<T>) => void; onError?: (evt: Event, ws: WSContext<T>) => void; } /** * Upgrade WebSocket Type */ export type UpgradeWebSocket<T = unknown, U = any, _WSEvents = WSEvents<T>> = (createEvents: (c: Context) => _WSEvents | Promise<_WSEvents>, options?: U) => MiddlewareHandler<any, string, { outputFormat: "ws"; }>; /** * ReadyState for WebSocket */ export type WSReadyState = 0 | 1 | 2 | 3; /** * An argument for WSContext class */ export interface WSContextInit<T = unknown> { send(data: string | ArrayBuffer | Uint8Array, options: SendOptions): void; close(code?: number, reason?: string): void; raw?: T; readyState: WSReadyState; url?: string | URL | null; protocol?: string | null; } /** * Options for sending message */ export interface SendOptions { compress?: boolean; } /** * A context for controlling WebSockets */ export declare class WSContext<T = unknown> { constructor(init: WSContextInit<T>); send(source: string | ArrayBuffer | Uint8Array, options?: SendOptions): void; raw?: T; binaryType: BinaryType; get readyState(): WSReadyState; url: URL | null; protocol: string | null; close(code?: number, reason?: string): void; } export type WSMessageReceive = string | Blob | ArrayBufferLike; export declare const createWSMessageEvent: (source: WSMessageReceive) => MessageEvent<WSMessageReceive>; export interface WebSocketHelperDefineContext { } export type WebSocketHelperDefineHandler<T, U> = (c: Context, events: WSEvents<T>, options?: U) => Promise<Response | void> | Response | void; /** * Create a WebSocket adapter/helper */ export declare const defineWebSocketHelper: <T = unknown, U = any>(handler: WebSocketHelperDefineHandler<T, U>) => UpgradeWebSocket<T, U>;