summaryrefslogtreecommitdiff
path: root/server/src/network/MessagePublisher.ts
blob: 9c6011fd056a7dc116cd0fd37c62c68256b88f30 (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
26
27
28
29
30
31
import { Message, MessagePublisher } from '@engine/network';
import { Server } from 'bun';
import { Constants } from '../constants';
import { stringify } from '@engine/utils';

export class ServerSocketMessagePublisher implements MessagePublisher {
  private server?: Server;
  private messages: Message[];

  constructor(server?: Server) {
    this.messages = [];

    if (server) this.setServer(server);
  }

  public setServer(server: Server) {
    this.server = server;
  }

  public addMessage(message: Message) {
    this.messages.push(message);
  }

  public publish() {
    if (this.messages.length) {
      this.server?.publish(Constants.GAME_TOPIC, stringify(this.messages));

      this.messages = [];
    }
  }
}