围绕websocket的RxJs Obesrver只会触发一个用户

时间:2016-11-02 20:49:25

标签: javascript typescript rxjs

我将一个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:

为什么呢?我做错了什么?

1 个答案:

答案 0 :(得分:2)

问题是您在创建处理程序中覆盖onmessage处理程序,因此只调用最后一个订阅者(最后一个设置var var messageSubject = new Subject(); this.websocket.onmessage = (evt => messageSubject.next(evt)); 值)。

你能做的是:

messageSubject.subscribe(...) 

然后

{{1}}

将适用于任意数量的订阅者