@mojojs/core
Version:
Real-time web framework
51 lines (50 loc) • 1.83 kB
TypeScript
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 };