summaryrefslogtreecommitdiff
path: root/server/src/network/MessagePublisher.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-25 18:10:09 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-25 18:10:09 -0600
commit2fbe0f0595d06800c1a648a4168b57471d395ee4 (patch)
tree830342a963be8e560cf07cfca8b8346bdcb51d90 /server/src/network/MessagePublisher.ts
parent773ce84f4bf559337e132edd7fcce02a0a2598fd (diff)
downloadjumpstorm-2fbe0f0595d06800c1a648a4168b57471d395ee4.tar.gz
jumpstorm-2fbe0f0595d06800c1a648a4168b57471d395ee4.zip
refactor server structure
Diffstat (limited to 'server/src/network/MessagePublisher.ts')
-rw-r--r--server/src/network/MessagePublisher.ts31
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 = [];
+ }
+ }
+}