+ this.httpServer.on(
+ 'upgrade',
+ (req: IncomingMessage, socket: internal.Duplex, head: Buffer): void => {
+ this.authenticate(req, (err) => {
+ if (err) {
+ socket.write(`HTTP/1.1 ${StatusCodes.UNAUTHORIZED} Unauthorized\r\n\r\n`);
+ socket.destroy();
+ return;
+ }
+ this.webSocketServer.handleUpgrade(req, socket, head, (ws: WebSocket) => {
+ this.webSocketServer.emit('connection', ws, req);
+ });
+ });
+ }
+ );
+ if (this.httpServer.listening === false) {
+ this.httpServer.listen(this.uiServerConfiguration.options);
+ }