X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=ui%2Fweb%2Fsrc%2Fcomposables%2FUIClient.ts;h=d056f6314e68fc71011ef1e5e2d66704f393c9b1;hb=cfab8dc9ea7801746461d4e8d6ac9852deb678b5;hp=49ca30182cd9e829db51da0d93c920b8538df56e;hpb=13a6f27c10768faa05acf33fd8e0637511d49e3e;p=e-mobility-charging-stations-simulator.git diff --git a/ui/web/src/composables/UIClient.ts b/ui/web/src/composables/UIClient.ts index 49ca3018..d056f631 100644 --- a/ui/web/src/composables/UIClient.ts +++ b/ui/web/src/composables/UIClient.ts @@ -5,7 +5,7 @@ import { type ResponsePayload, ResponseStatus } from '@/types' -import config from '@/assets/config' +import configuration from '@/assets/config' type ResponseHandler = { procedureName: ProcedureName @@ -111,8 +111,8 @@ export class UIClient { private openWS(): void { this.ws = new WebSocket( - `ws://${config.uiServer.host}:${config.uiServer.port}`, - config.uiServer.protocol + `ws://${configuration.uiServer.host}:${configuration.uiServer.port}`, + configuration.uiServer.protocol ) this.ws.onmessage = this.responseHandler.bind(this) this.ws.onerror = errorEvent => { @@ -123,26 +123,9 @@ export class UIClient { } } - private setResponseHandler( - id: string, - procedureName: ProcedureName, - resolve: (value: ResponsePayload | PromiseLike) => void, - reject: (reason?: unknown) => void - ): void { - this.responseHandlers.set(id, { procedureName, resolve, reject }) - } - - private getResponseHandler(id: string): ResponseHandler | undefined { - return this.responseHandlers.get(id) - } - - private deleteResponseHandler(id: string): boolean { - return this.responseHandlers.delete(id) - } - private async sendRequest( - command: ProcedureName, - data: RequestPayload + procedureName: ProcedureName, + payload: RequestPayload ): Promise { return new Promise((resolve, reject) => { if (this.ws.readyState !== WebSocket.OPEN) { @@ -150,22 +133,22 @@ export class UIClient { } if (this.ws.readyState === WebSocket.OPEN) { const uuid = crypto.randomUUID() - const msg = JSON.stringify([uuid, command, data]) + const msg = JSON.stringify([uuid, procedureName, payload]) const sendTimeout = setTimeout(() => { - this.deleteResponseHandler(uuid) - return reject(new Error(`Send request '${command}' message timeout`)) + this.responseHandlers.delete(uuid) + return reject(new Error(`Send request '${procedureName}' message timeout`)) }, 60 * 1000) try { this.ws.send(msg) - this.setResponseHandler(uuid, command, resolve, reject) + this.responseHandlers.set(uuid, { procedureName, resolve, reject }) } catch (error) { - this.deleteResponseHandler(uuid) + this.responseHandlers.delete(uuid) reject(error) } finally { clearTimeout(sendTimeout) } } else { - throw new Error(`Send request '${command}' message: connection not opened`) + throw new Error(`Send request '${procedureName}' message: connection not opened`) } }) } @@ -180,7 +163,7 @@ export class UIClient { const [uuid, responsePayload] = response if (this.responseHandlers.has(uuid) === true) { - const { procedureName, resolve, reject } = this.getResponseHandler(uuid)! + const { procedureName, resolve, reject } = this.responseHandlers.get(uuid)! switch (responsePayload.status) { case ResponseStatus.SUCCESS: resolve(responsePayload) @@ -193,7 +176,7 @@ export class UIClient { `Response status for procedure '${procedureName}' not supported: '${responsePayload.status}'` ) } - this.deleteResponseHandler(uuid) + this.responseHandlers.delete(uuid) } else { throw new Error(`Not a response to a request: ${JSON.stringify(response, undefined, 2)}`) }