From 2a78593f6f1952483a6a9e3f510b4fe21f1a9dfd Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 29 Nov 2021 15:38:58 +0100 Subject: [PATCH] Add initial code for WebSocket server to pilot remotely the simulator MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/charging-station/WebSocketServer.ts | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/charging-station/WebSocketServer.ts diff --git a/src/charging-station/WebSocketServer.ts b/src/charging-station/WebSocketServer.ts new file mode 100644 index 00000000..b0660bd8 --- /dev/null +++ b/src/charging-station/WebSocketServer.ts @@ -0,0 +1,45 @@ +import { IncomingMessage } from 'http'; +import WebSocket from 'ws'; +import logger from '../utils/Logger'; + +enum WebSocketServerCommand { + START_TRANSACTION = 'startTransaction', + STOP_TRANSACTION = 'stopTransaction', + UNKNOWN = 'unknown', +} + +type WebSocketServerRequest = [WebSocketServerCommand, Record]; + +export default class WebSocketServer extends WebSocket.Server { + public constructor(options?: WebSocket.ServerOptions, callback?: () => void) { + // Create the WebSocket Server + super(options, callback); + } + + public broadcastToClients(message: Record): void { + for (const client of this.clients) { + if (client?.readyState === WebSocket.OPEN) { + client.send(message); + } + } + } + + public start(): void { + // this.on('connection', (socket: WebSocket, request: IncomingMessage): void => { + // // Check connection validity + // }); + this.on('message', (messageData) => { + let [command, payload]: WebSocketServerRequest = [WebSocketServerCommand.UNKNOWN, {}]; + // FIXME: check for iterable object + [command, payload] = JSON.parse(messageData.toString()) as WebSocketServerRequest; + switch (command) { + case WebSocketServerCommand.START_TRANSACTION: + break; + case WebSocketServerCommand.STOP_TRANSACTION: + break; + default: + logger.warn(`Unknown command: ${command}`); + } + }); + } +} -- 2.34.1