diff options
Diffstat (limited to 'client/src/network/MessagePublisher.ts')
-rw-r--r-- | client/src/network/MessagePublisher.ts | 25 |
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 = []; + } + } +} |