diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-08-25 18:10:09 -0600 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-08-25 18:10:09 -0600 |
commit | 2fbe0f0595d06800c1a648a4168b57471d395ee4 (patch) | |
tree | 830342a963be8e560cf07cfca8b8346bdcb51d90 /server/src/network/MessagePublisher.ts | |
parent | 773ce84f4bf559337e132edd7fcce02a0a2598fd (diff) | |
download | jumpstorm-2fbe0f0595d06800c1a648a4168b57471d395ee4.tar.gz jumpstorm-2fbe0f0595d06800c1a648a4168b57471d395ee4.zip |
refactor server structure
Diffstat (limited to 'server/src/network/MessagePublisher.ts')
-rw-r--r-- | server/src/network/MessagePublisher.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/server/src/network/MessagePublisher.ts b/server/src/network/MessagePublisher.ts new file mode 100644 index 0000000..9c6011f --- /dev/null +++ b/server/src/network/MessagePublisher.ts @@ -0,0 +1,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 = []; + } + } +} |