socket.io-react-hooks-advanced
Version:
A modular and extensible React + Socket.IO hook library designed for real-world applications. Supports namespaced sockets, reconnection strategies, offline queues, latency monitoring, middleware, encryption, and more.
41 lines (40 loc) • 1.14 kB
JavaScript
export class MiddlewareManager {
constructor() {
this.middlewares = [];
}
addMiddleware(entry) {
this.middlewares.push(entry);
return entry.id;
}
removeMiddleware(id) {
this.middlewares = this.middlewares.filter((m) => m.id !== id);
}
runEmit(event, data, finalEmit) {
let index = -1;
const middlewares = this.middlewares.filter((m) => m.emit !== undefined);
const next = (ev, dt) => {
index++;
if (index < middlewares.length) {
middlewares[index].emit(ev, dt, next);
}
else {
finalEmit(ev, dt);
}
};
next(event, data);
}
runOn(event, data, finalHandler) {
let index = -1;
const middlewares = this.middlewares.filter((m) => m.on !== undefined);
const next = (dt) => {
index++;
if (index < middlewares.length) {
middlewares[index].on(event, dt, next);
}
else {
finalHandler(dt);
}
};
next(data);
}
}