class WS {
constructor() {
this.ws = initWS();
this.subscribers = {};
}
subscibe(channel, subscriber) {
this.subscribers[channel].push(subscriber) //естественно, надо предусмотреть инициализацию массива для первого подписчика
}
messageHandler(messagePayload) {
this.subscribers[messagePayload.channel].forEach(subscriber => subscriber.notify(messagePayload))
}
}
А так, функция интересная, но хотелось бы не вклеивать WebSocket в каждый объект. Может можно как-нибудь сразу внутри класса встроить инициализированный WebSocket, а затем раздавать его на все объекты этого класса Request?
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms))
channel.consume("queue", async (message) {
await Promise.all([
delay(500),
messageHandler(message)
]);
});