summaryrefslogtreecommitdiff
path: root/client/src/network/MessagePublisher.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/network/MessagePublisher.ts')
-rw-r--r--client/src/network/MessagePublisher.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/client/src/network/MessagePublisher.ts b/client/src/network/MessagePublisher.ts
new file mode 100644
index 0000000..de105c5
--- /dev/null
+++ b/client/src/network/MessagePublisher.ts
@@ -0,0 +1,25 @@
+import type { Message, MessagePublisher } from '@engine/network';
+import { stringify } from '@engine/utils';
+
+export class ClientSocketMessagePublisher implements MessagePublisher {
+ private socket: WebSocket;
+ private messages: Message[];
+
+ constructor(socket: WebSocket) {
+ this.socket = socket;
+ this.messages = [];
+ }
+
+ public addMessage(message: Message) {
+ this.messages.push(message);
+ }
+
+ public publish() {
+ if (this.socket.readyState == WebSocket.OPEN) {
+ this.messages.forEach((message: Message) =>
+ this.socket.send(stringify(message))
+ );
+ this.messages = [];
+ }
+ }
+}