sockets - 想要无限期观察随时间变化的阵列

标签 sockets angular rxjs observable

我正在尝试使用Rxjs Observables来监视我的数组中的变化,但是没有运气。

进口:

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';

在我对Angular 2的主要服务中

我从socket.io服务器获取一个数组,该数组在用户连接或断开连接时会更改。
每次更改后我都要设置数据。

我知道套接字发出时userList正在更新,但是由于某些原因,我无法弄清楚如何持续观察组件中的这种变化。

主要服务:
socket.on('get users',(data)=>{
        this.userList= data;
      });

主要服务中的功能-getUsers():
  getUsers(){
        return Observable.of(this.userList);
      }

我试图同时订阅userList var和使用异步管道,但都没有更新,它们仅在第一次工作然后停止。
如何使它实际上无限期地观察变化?

最佳答案

MainService

userList: Subject = new Subject<any>();
userList$ = this.userList.asObservable();

socket.on('get users', (data: any) => {
   this.userList.next(data);
});

在组件
this.mainService.userList$
.subscribe( 
   (data:any) => console.log(data)
);

关于sockets - 想要无限期观察随时间变化的阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42078057/

相关文章:

angular - 在 Promise 中返回 Observable

html - Flexbox:使内联组件扩展父容器的整个宽度

error-handling - 捕获并替换Rx可观察到的流/序列

linux - 套接字选项 SO_SNDLOWAT 的用途是什么

c++ - 如何在 Windows 中将套接字设置为阻塞模式?

C++ - 套接字服务器线程

c - 使用 sendfile 而不是 sendto 的零复制 udp 套接字

angular - RouterModule.forRoot(ROUTES) 与 RouterModule.forChild(ROUTES)

angular - 如何取消订阅/停止 Observable?

typescript - 预期对象是一种标量可观察对象,但它是可观察对象