import {
ApplicationProtocol,
+ type ConfigurationData,
ProcedureName,
type ProtocolResponse,
type RequestPayload,
type ResponsePayload,
ResponseStatus
} from '@/types'
-// @ts-expect-error: configuration file can be non existent
-// eslint-disable-next-line import/no-unresolved
-import configuration from '@/assets/config'
type ResponseHandler = {
procedureName: ProcedureName
private ws!: WebSocket
private responseHandlers: Map<string, ResponseHandler>
- private constructor() {
+ private constructor(private configuration: ConfigurationData) {
this.openWS()
this.responseHandlers = new Map<string, ResponseHandler>()
}
- public static getInstance() {
+ public static getInstance(configuration: ConfigurationData) {
if (UIClient.instance === null) {
- UIClient.instance = new UIClient()
+ UIClient.instance = new UIClient(configuration)
}
return UIClient.instance
}
private openWS(): void {
this.ws = new WebSocket(
- `${configuration.uiServer.secure === true ? ApplicationProtocol.WSS : ApplicationProtocol.WS}://${configuration.uiServer.host}:${configuration.uiServer.port}`,
- `${configuration.uiServer.protocol}${configuration.uiServer.version}`
+ `${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}`
)
this.ws.onmessage = this.responseHandler.bind(this)
this.ws.onerror = errorEvent => {
const sendTimeout = setTimeout(() => {
this.responseHandlers.delete(uuid)
return reject(new Error(`Send request '${procedureName}' message timeout`))
- }, 60 * 1000)
+ }, 60000)
try {
this.ws.send(msg)
this.responseHandlers.set(uuid, { procedureName, resolve, reject })