silphius/app/net/server.js

33 lines
841 B
JavaScript
Raw Normal View History

2024-07-20 04:41:00 -05:00
import {SERVER_LATENCY} from '@/util/constants.js';
2024-07-21 02:30:13 -05:00
import EventEmitter from '@/util/event-emitter.js';
2024-06-10 22:42:30 -05:00
2024-07-21 01:37:40 -05:00
const textDecoder = new TextDecoder();
2024-06-10 22:42:30 -05:00
export default class Server {
constructor() {
2024-07-21 02:30:13 -05:00
this.emitter = new EventEmitter();
2024-06-10 22:42:30 -05:00
}
accept(connection, packet) {
2024-07-21 02:30:13 -05:00
this.emitter.invoke(packet.type, connection, packet.payload);
2024-06-10 22:42:30 -05:00
}
2024-06-13 01:26:01 -05:00
addPacketListener(type, listener) {
2024-07-21 02:30:13 -05:00
this.emitter.addListener(type, listener);
2024-06-10 22:42:30 -05:00
}
2024-07-21 01:37:40 -05:00
async readJson(path) {
return JSON.parse(textDecoder.decode(await this.readData(path)));
}
2024-06-13 01:26:01 -05:00
removePacketListener(type, listener) {
2024-07-21 02:30:13 -05:00
this.emitter.removeListener(type, listener);
2024-06-10 22:42:30 -05:00
}
send(connection, packet) {
if (SERVER_LATENCY > 0) {
setTimeout(() => {
this.transmit(connection, packet);
}, SERVER_LATENCY);
}
else {
this.transmit(connection, packet);
}
}
}