UNPKG

@openevstack/ocpp-rpc

Version:

⚡ A lightweight, production-ready RPC server built with Express and WebSocket for handling OCPP-based EV charger communication. Part of the OpenEVStack ecosystem.

49 lines (48 loc) 1.82 kB
/// <reference types="node" /> /// <reference types="node" /> /// <reference types="node" /> import EventBuffer from "../utils/event-buffer"; import WebSocket from "ws"; import { ClientOptions, IClose } from "./Options.interface"; import { IncomingMessage } from "http"; export interface IRpcClient { reconfigure(options: ClientOptions): void; connect(): Promise<{ response: IncomingMessage | undefined; } | undefined>; sendRaw(message: string): void; close(payload: IClose): Promise<void>; handle(method: FunctionConstructor, handler: any): void; removeHandler(method?: string): void; removeAllHandlers(): void; call(method: string, params: string, options: ICallOptions): Promise<void>; _onCall(msgId: string, method: string, params: string): void; _attachWebsocket(ws: WebSocket, leadMsgBuffer: EventBuffer): void; _rejectPendingCalls(abortReason: string): void; _awaitUntilPendingSettled(): Promise<PromiseSettledResult<any>[]>; _handleDisconnect(payload: IDisconnect): void; _beginConnect(): void; _onMessage(buffer: string | ArrayBuffer | Buffer[]): void; _onCall(msgId: string, method: string, params: string): Promise<void>; _onCallResult(msgId: string, result: string): void; _onCallError(msgId: string, errorCode: number, errorDescription: string, errorDetails: Record<string, any> | undefined): void; } export interface ICallOptions { callTimeoutMs?: number; noReply: boolean; signal: any; } export interface IPendingCall { resolve?: (...args: any[]) => void; msgId: string; method: string; params?: string; timeout?: Promise<void>; reject?: any; promise?: any; abort?: (reason: string) => void; } export interface IDisconnect { code: number; reason: Buffer | string; }