networking
Version:
Library for typed, event-based networking between a server and clients.
30 lines (29 loc) • 1.17 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const emitter_1 = require("./emitter");
class RequestEmitter extends emitter_1.Emitter {
// public emit(event: string, ...args: Json[]) : Promise<any>;
emit(event, ...args) {
return new Promise((resolve, reject) => {
this.socket.emit('@net/request', event, ...args, (success, result) => {
if (success)
resolve(result);
else
reject(new Error('An error occurred on the remote when fulfilling this request'));
});
});
}
// public on(event: string, callback: (...args: Json[]) => void): void;
on(event, callback) {
if (!(event in this.callbacks))
this.callbacks[event] = [];
this.callbacks[event].push({ once: false, callback });
}
// public once(event: string, callback: (...args: Json[]) => void): void;
once(event, callback) {
if (!(event in this.callbacks))
this.callbacks[event] = [];
this.callbacks[event].push({ once: true, callback });
}
}
exports.RequestEmitter = RequestEmitter;
;