43 lines
900 B
JavaScript
43 lines
900 B
JavaScript
import {CLIENT_LATENCY} from '@/constants.js';
|
|
|
|
export default class Client {
|
|
constructor() {
|
|
this.listeners = {};
|
|
}
|
|
accept(packet) {
|
|
const listeners = this.listeners[packet.type];
|
|
if (!listeners) {
|
|
return;
|
|
}
|
|
for (const i in listeners) {
|
|
listeners[i](packet.payload);
|
|
}
|
|
}
|
|
addPacketListener(type, listener) {
|
|
if (!this.listeners[type]) {
|
|
this.listeners[type] = [];
|
|
}
|
|
this.listeners[type].push(listener);
|
|
}
|
|
removePacketListener(type, listener) {
|
|
const listeners = this.listeners[type];
|
|
if (!listeners) {
|
|
return;
|
|
}
|
|
const index = listeners.indexOf(listener);
|
|
if (-1 !== index) {
|
|
listeners.splice(index, 1);
|
|
}
|
|
}
|
|
send(packet) {
|
|
if (CLIENT_LATENCY > 0) {
|
|
setTimeout(() => {
|
|
this.transmit(packet);
|
|
}, CLIENT_LATENCY);
|
|
}
|
|
else {
|
|
this.transmit(packet);
|
|
}
|
|
}
|
|
}
|