summaryrefslogtreecommitdiff
path: root/server/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/network')
-rw-r--r--server/src/network/MessageProcessor.ts8
-rw-r--r--server/src/network/MessagePublisher.ts31
-rw-r--r--server/src/network/MessageReceiver.ts22
-rw-r--r--server/src/network/index.ts16
4 files changed, 77 insertions, 0 deletions
diff --git a/server/src/network/MessageProcessor.ts b/server/src/network/MessageProcessor.ts
new file mode 100644
index 0000000..de42459
--- /dev/null
+++ b/server/src/network/MessageProcessor.ts
@@ -0,0 +1,8 @@
+import { MessageProcessor } from '@engine/network';
+import { ServerMessage } from '.';
+
+export class ServerMessageProcessor implements MessageProcessor {
+ constructor() {}
+
+ public process(_message: ServerMessage) {}
+}
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 = [];
+ }
+ }
+}
diff --git a/server/src/network/MessageReceiver.ts b/server/src/network/MessageReceiver.ts
new file mode 100644
index 0000000..fcac0a4
--- /dev/null
+++ b/server/src/network/MessageReceiver.ts
@@ -0,0 +1,22 @@
+import { MessageQueueProvider } from '@engine/network';
+import type { ServerMessage } from '.';
+
+export class ServerSocketMessageReceiver implements MessageQueueProvider {
+ private messages: ServerMessage[];
+
+ constructor() {
+ this.messages = [];
+ }
+
+ public addMessage(message: ServerMessage) {
+ this.messages.push(message);
+ }
+
+ public getNewMessages() {
+ return this.messages;
+ }
+
+ public clearMessages() {
+ this.messages = [];
+ }
+}
diff --git a/server/src/network/index.ts b/server/src/network/index.ts
new file mode 100644
index 0000000..8ffa689
--- /dev/null
+++ b/server/src/network/index.ts
@@ -0,0 +1,16 @@
+import { Message } from '@engine/network';
+
+export * from './MessageProcessor';
+export * from './MessagePublisher';
+export * from './MessageReceiver';
+
+export type SessionData = { sessionId: string };
+
+export type Session = {
+ sessionId: string;
+ controllableEntities: Set<string>;
+};
+
+export interface ServerMessage extends Message {
+ sessionData: SessionData;
+}