【问题标题】:Observable form callback seems to only fire once可观察的表单回调似乎只触发一次
【发布时间】:2016-12-04 11:29:38
【问题描述】:

一点背景故事,我有一个应用程序,它使用 websockets 进行所有主要的通信方式。要创建该套接字,我必须从本地存储中检索令牌,然后连接套接字并针对服务器进行身份验证。

但是我希望能够立即观察套接字事件,所以我创建了一个异步套接字服务,它允许我将套接字绑定排队并在建立连接后执行它们。这似乎一直有效,我尝试使用Observable.bindCallback 函数观察socket.on。这只工作一次,然后再也不会输出任何东西。

套接字服务的代码在这里http://pastebin.com/Mub9zSWQ

我从我的应用组件调用socket.observe('likePost').do(res => console.debug(res)).subscribe(res => store$.dispatch(new LikePostReceivedAction(res.user_id, res.post_id))); 来处理套接字事件。

我也愿意接受有关如何处理套接字初始化的其他想法,尤其是当我必须重新连接套接字时该怎么做。

【问题讨论】:

    标签: angular socket.io rxjs ngrx


    【解决方案1】:

    事实证明,为了观察 on 事件,我必须使用 observeOnce(event: string): Observable<any> {return Observable.bindCallback((event: string, f) =>this.asyncSocket.once(event, f))(event);},然后只需将 off 方法存根添加到 AsyncSocket 以使其成为 eventLike 目标。

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 1970-01-01
      • 2013-10-26
      • 2019-08-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      相关资源
      最近更新 更多