aboutsummaryrefslogtreecommitdiff
path: root/client/src/network/MessageQueueReceiver.ts
blob: 46ca5ccaef681ad1b1859ea018c679c83ef74948 (plain) (blame)
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, MessageQueueProvider } from '@engine/network';
import { parse } from '@engine/utils';

export class ClientSocketMessageQueueProvider implements MessageQueueProvider {
  private socket: WebSocket;
  private messages: Message[];

  constructor(socket: WebSocket) {
    this.socket = socket;
    this.messages = [];

    this.socket.addEventListener('message', (e) => {
      const messages = parse<Message[]>(e.data);
      this.messages = this.messages.concat(messages);
    });
  }

  public getNewMessages() {
    return this.messages;
  }

  public clearMessages() {
    this.messages = [];
  }
}