jumpstorm/client/src/network/MessageQueueReceiver.ts

28 lines
698 B
TypeScript

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) => {
e.data.arrayBuffer().then((buffer) => {
const messages = parse<Message[]>(new Uint8Array(buffer));
this.messages = this.messages.concat(messages);
});
});
}
public getNewMessages() {
return this.messages;
}
public clearMessages() {
this.messages = [];
}
}