我将一个websocket包装在RxJS可观察对象中,如下所示:
this.wsObserver = Observable.create(observer=>{
this.websocket.onmessage = (evt) => {
console.info("ws.onmessage: " + evt);
observer.next(evt);
};
});
这样可行,但是如果我添加多个订阅者,则只会触发一个(最后一个添加):
this.wsObserver.subscribe((result) => {
console.info("! result: " + result);
});
this.wsObserver.subscribe((result) => {
console.info("!2 result: " + result);
});
仅发生!2 result:
。
为什么呢?我做错了什么?
答案 0 :(得分:2)
问题是您在创建处理程序中覆盖onmessage
处理程序,因此只调用最后一个订阅者(最后一个设置var var messageSubject = new Subject();
this.websocket.onmessage = (evt => messageSubject.next(evt));
值)。
你能做的是:
messageSubject.subscribe(...)
然后
{{1}}
将适用于任意数量的订阅者