@appsensorlike/appsensorlike_websocket
Version:
Base class/types utilized by websocket client/server
50 lines (49 loc) • 2.98 kB
TypeScript
/// <reference types="node" resolution-mode="require"/>
import { ActionRequest } from "../appsensor-websocket.js";
import { IValidateInitialize } from "@appsensorlike/appsensorlike/core/core.js";
import { HttpS2Server, HttpS2ServerConfig } from "@appsensorlike/appsensorlike/http/HttpS2Server.js";
import { IncomingMessage } from "http";
import WebSocket, { PerMessageDeflateOptions, WebSocketServer } from "ws";
declare class WebSocketServerConfig extends HttpS2ServerConfig implements IValidateInitialize {
private static DEFAULT_PORT;
websocketServer?: {
path?: string | undefined;
clientTracking?: boolean | undefined;
perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
maxPayload?: number | undefined;
skipUTF8Validation?: boolean | undefined;
};
clientApplicationIdentificationHeaderName?: string;
checkValidInitialize(): void;
}
interface WebSocketAdditionalProperties {
isAlive?: boolean;
clientApplication?: string;
remoteAddress?: string;
uuid?: string;
}
type WebSocketExt = WebSocket.WebSocket & WebSocketAdditionalProperties;
declare class AppSensorWebSocketServer extends HttpS2Server {
protected static ACCESS_DENIED_CLOSE_CODE: number;
protected config: WebSocketServerConfig;
protected websocketServer: WebSocketServer | null;
protected websocketServerOptions: WebSocket.ServerOptions;
constructor(config: WebSocketServerConfig, handleProtocols?: (protocols: Set<string>, request: IncomingMessage) => string | false);
protected getConfiguration(): HttpS2ServerConfig;
protected attachToServer(): Promise<void>;
protected isConnectionAllowedWrapper(me: AppSensorWebSocketServer): (ws: WebSocketExt) => boolean;
protected isConnectionAllowed(ws: WebSocketExt): boolean;
protected isActionAuthorized(ws: WebSocketExt, request: ActionRequest): boolean;
private ping;
protected onMessageWrapper(me: AppSensorWebSocketServer): (this: WebSocketExt, data: WebSocket.RawData, isBinary: boolean) => void;
protected onClientRequest(ws: WebSocketExt, request: ActionRequest): void;
closeServer(): Promise<void>;
protected broadcast(actionName: string, result: number | Object | null | string, resultElementClass: string | null): void;
protected static getParameter(request: ActionRequest, paramName: string): string | Object | undefined;
protected static reportMissingParameter(ws: WebSocket, request: ActionRequest, paramName: string): void;
protected static reportError(ws: WebSocket, request: ActionRequest, error: any): void;
protected static reportAccessDenied(ws: WebSocket): void;
protected static reportUnAuthorizedAction(ws: WebSocket, request: ActionRequest): void;
protected static sendResult(ws: WebSocket, request: ActionRequest, result: number | Object | null | string, resultElementClass: string | null): void;
}
export { AppSensorWebSocketServer, WebSocketServerConfig, WebSocketExt };