diff --git a/server/src/classes/rtengineng/event.js b/server/src/classes/rtengineng/event.js new file mode 100644 index 0000000..498406b --- /dev/null +++ b/server/src/classes/rtengineng/event.js @@ -0,0 +1,21 @@ +export default class WSEvent { + constructor(fn, middlewares = []) { + this.fn = fn + this.middlewares = middlewares + } + + execute = async (socket, body) => { + try { + // execute middlewares + for await (const middleware of this.middlewares) { + await middleware(socket, body) + } + + await this.fn(socket, body) + } catch (error) { + await this.onError(socket, body, error) + } + } + + onError = async (socket, body, error) => {} +}