UNPKG

@mojojs/core

Version:

Real-time web framework

51 lines (50 loc) 1.83 kB
import type { JSONValue, WebSocketBackend } from './types.js'; import type { UserAgentResponse } from './user-agent/response.js'; import EventEmitter from 'node:events'; interface WebSocketControlEvents { close: (this: WebSocket, ...args: any[]) => void; ping: (this: WebSocket, ...args: any[]) => void; pong: (this: WebSocket, ...args: any[]) => void; } interface WebSocketEvents extends WebSocketControlEvents { error: (this: WebSocket, error: Error) => void; message: (this: WebSocket, message: JSONValue | Buffer) => void; } declare interface WebSocketEventEmitter { on: <T extends keyof WebSocketEvents>(event: T, listener: WebSocketEvents[T]) => this; emit: <T extends keyof WebSocketEvents>(event: T, ...args: Parameters<WebSocketEvents[T]>) => boolean; } /** * WebSocket connection class. */ declare class WebSocket extends EventEmitter implements WebSocketEventEmitter { /** * WebSocket handshake. */ handshake: UserAgentResponse | null; /** * JSON mode. */ jsonMode: boolean; _ws: WebSocketBackend; constructor(ws: WebSocketBackend, handshake: UserAgentResponse | null, options: { jsonMode: boolean; }); [Symbol.asyncIterator](): AsyncIterableIterator<JSONValue | Buffer>; /** * Close WebSocket connection. */ close(code?: number, reason?: string): void; /** * Send WebSocket ping frame. */ ping(data: Buffer): Promise<void>; /** * Send WebSocket message. */ send(message: any): Promise<void>; _messageIterator(): AsyncIterableIterator<(JSONValue | Buffer)[]>; _safeHandler<T extends keyof WebSocketControlEvents>(event: T, ...args: Parameters<WebSocketControlEvents[T]>): void; _safeMessageHandler(message: Buffer, isBinary: boolean): void; } export { WebSocket };