- .messageHandler(messageData)
- .catch(() => {
- logger.error(`${this.logPrefix()} Error while handling message data: %j`, messageData);
- });
- });
- socket.on('error', (error) => {
- logger.error(`${this.logPrefix()} Error on WebSocket: %j`, error);
- });
- });
+ ?.requestHandler(request)
+ .then((protocolResponse?: ProtocolResponse) => {
+ if (protocolResponse != null) {
+ this.sendResponse(protocolResponse)
+ }
+ })
+ .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: '${getWebSocketCloseEventStatusString(
+ code
+ )}' - '${reason.toString()}'`
+ )
+ })
+ })
+ this.httpServer.on('connect', (req: IncomingMessage, socket: Duplex, _head: Buffer) => {
+ if (req.headers.connection !== 'Upgrade' || req.headers.upgrade !== 'websocket') {
+ socket.write(`HTTP/1.1 ${StatusCodes.BAD_REQUEST} Bad Request\r\n\r\n`)
+ socket.destroy()
+ }
+ })
+ this.httpServer.on('upgrade', (req: IncomingMessage, socket: Duplex, head: Buffer): void => {
+ this.authenticate(req, err => {
+ if (err != null) {
+ socket.write(`HTTP/1.1 ${StatusCodes.UNAUTHORIZED} Unauthorized\r\n\r\n`)
+ socket.destroy()
+ return
+ }
+ try {
+ this.webSocketServer.handleUpgrade(req, socket, head, (ws: WebSocket) => {
+ this.webSocketServer.emit('connection', ws, req)
+ })
+ } catch (error) {
+ logger.error(
+ `${this.logPrefix(
+ moduleName,
+ 'start.httpServer.on.upgrade'
+ )} Error at handling connection upgrade:`,
+ error
+ )
+ }
+ })
+ })
+ this.startHttpServer()