hono
Version:
Web framework built on Web Standards
36 lines (35 loc) • 1.24 kB
TypeScript
/**
* @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> = (createEvents: (c: Context) => WSEvents<T> | Promise<WSEvents<T>>, options?: U) => MiddlewareHandler<any, string, {
outputFormat: 'ws';
}>;
export type WSReadyState = 0 | 1 | 2 | 3;
export type WSContext<T = unknown> = {
send(source: string | ArrayBuffer | Uint8Array, options?: {
compress: boolean;
}): void;
raw?: T;
binaryType: BinaryType;
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>;