import {
ApplicationProtocol,
+ AuthenticationType,
type ConfigurationData,
ProcedureName,
type ProtocolResponse,
return this.sendRequest(ProcedureName.STOP_SIMULATOR, {})
}
+ public async deleteChargingStation(hashId: string): Promise<ResponsePayload> {
+ return this.sendRequest(ProcedureName.DELETE_CHARGING_STATIONS, { hashIds: [hashId] })
+ }
+
public async listChargingStations(): Promise<ResponsePayload> {
return this.sendRequest(ProcedureName.LIST_CHARGING_STATIONS, {})
}
})
}
- private openWS(): void {
+ public openWS(): void {
+ const protocols =
+ this.configuration.uiServer.authentication?.enabled === true &&
+ this.configuration.uiServer.authentication?.type === AuthenticationType.PROTOCOL_BASIC_AUTH
+ ? [
+ `${this.configuration.uiServer.protocol}${this.configuration.uiServer.version}`,
+ `authorization.basic.${btoa(`${this.configuration.uiServer.authentication.username}:${this.configuration.uiServer.authentication.password}`).replace(/={1,2}$/, '')}`
+ ]
+ : `${this.configuration.uiServer.protocol}${this.configuration.uiServer.version}`
this.ws = new WebSocket(
`${this.configuration.uiServer.secure === true ? ApplicationProtocol.WSS : ApplicationProtocol.WS}://${this.configuration.uiServer.host}:${this.configuration.uiServer.port}`,
- `${this.configuration.uiServer.protocol}${this.configuration.uiServer.version}`
+ protocols
)
+ this.ws.onopen = openEvent => {
+ console.info('WebSocket opened', openEvent)
+ }
this.ws.onmessage = this.responseHandler.bind(this)
this.ws.onerror = errorEvent => {
console.error('WebSocket error: ', errorEvent)
payload: RequestPayload
): Promise<ResponsePayload> {
return new Promise<ResponsePayload>((resolve, reject) => {
- if (this.ws.readyState !== WebSocket.OPEN) {
- this.openWS()
- }
if (this.ws.readyState === WebSocket.OPEN) {
const uuid = crypto.randomUUID()
const msg = JSON.stringify([uuid, procedureName, payload])
const sendTimeout = setTimeout(() => {
this.responseHandlers.delete(uuid)
- return reject(new Error(`Send request '${procedureName}' message timeout`))
+ return reject(new Error(`Send request '${procedureName}' message: connection timeout`))
}, 60000)
try {
this.ws.send(msg)
clearTimeout(sendTimeout)
}
} else {
- throw new Error(`Send request '${procedureName}' message: connection not opened`)
+ reject(new Error(`Send request '${procedureName}' message: connection closed`))
}
})
}