summaryrefslogtreecommitdiff
path: root/client/src/network/MessagePublisher.ts
blob: c0aec287af0566a4dd224f3159d96c3dd58f13a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import type { Message, MessagePublisher } from '@engine/network';
import { serialize } 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(serialize(message))
      );
      this.messages = [];
    }
  }
}