- // FIXME: check connection validity
- socket.on('message', (messageData) => {
- this.uiServices
- .get(version)
- .messageHandler(messageData)
- .catch(() => {
- logger.error(`${this.logPrefix()} Error while handling message data: %j`, messageData);
- });
+ const [, version] = UIServerUtils.getProtocolAndVersion(ws.protocol);
+ this.registerProtocolVersionUIService(version);
+ ws.on('message', (rawData) => {
+ const request = this.validateRawDataRequest(rawData);
+ if (request === false) {
+ ws.close(WebSocketCloseEventStatusCode.CLOSE_INVALID_PAYLOAD);
+ return;
+ }
+ const [requestId] = request as ProtocolRequest;
+ this.responseHandlers.set(requestId, ws);
+ this.uiServices.get(version)?.requestHandler(request).catch(Constants.EMPTY_FUNCTION);
+ });
+ ws.on('error', (error) => {
+ logger.error(`${this.logPrefix(moduleName, 'start.ws.onerror')} WebSocket error:`, error);
+ });
+ ws.on('close', (code, reason) => {
+ logger.debug(
+ `${this.logPrefix(
+ moduleName,
+ 'start.ws.onclose'
+ )} WebSocket closed: '${Utils.getWebSocketCloseEventStatusString(
+ code
+ )}' - '${reason.toString()}'`
+ );