1 import { IncomingMessage
} from
'http';
2 import WebSocket from
'ws';
3 import logger from
'../utils/Logger';
5 enum WebSocketServerCommand
{
6 START_TRANSACTION
= 'startTransaction',
7 STOP_TRANSACTION
= 'stopTransaction',
11 type WebSocketServerRequest
= [WebSocketServerCommand
, Record
<string, unknown
>];
13 export default class WebSocketServer
extends WebSocket
.Server
{
14 public constructor(options
?: WebSocket
.ServerOptions
, callback
?: () => void) {
15 // Create the WebSocket Server
16 super(options
, callback
);
19 public broadcastToClients(message
: Record
<string, unknown
>): void {
20 for (const client
of this.clients
) {
21 if (client
?.readyState
=== WebSocket
.OPEN
) {
27 public start(): void {
28 // this.on('connection', (socket: WebSocket, request: IncomingMessage): void => {
29 // // Check connection validity
31 this.on('message', (messageData
) => {
32 let [command
, payload
]: WebSocketServerRequest
= [WebSocketServerCommand
.UNKNOWN
, {}];
33 // FIXME: check for iterable object
34 [command
, payload
] = JSON
.parse(messageData
.toString()) as WebSocketServerRequest
;
36 case WebSocketServerCommand
.START_TRANSACTION
:
38 case WebSocketServerCommand
.STOP_TRANSACTION
:
41 logger
.warn(`Unknown command: ${command}`);