0

我正在使用Couchbase服务器作为我的Angular 2 Web应用程序的数据库。数据交换通过与我的CouchBase服务器交谈的WebAPI发生。 我不知道这是否是正确的方法,为的WebAPI做这些事在我查询的那一刻(轮询)每5秒,以获得更新的数据使用Angular 2 Observable显示连续的数据流

this.events = getRecentEvents(_siteUrl: String) { 

    return Observable.interval(5000) 
     .switchMap(() => this.http.get(_siteUrl).map((res: Response) => res.json())) 
     .do(data => console.log('server data:', data)) // debug 
     .catch(this.handleError); 
} 

我的列表使用此调用返回的可观察对象将其绑定到一个列表上使用异步管道

<li class="item" *ngFor="#eventitem of events | async; #i = index"> 
    <h1>{{eventitem}} {{i}}</h1> 
</li> 

我的问题是UI,这是应该做的正确的方式? 我是不是用重复的WebAPI调用把太多的负载放在服务器上? 如果这不是处理连续数据流的方式,任何人都可以提出更好的选择。

回答

0

它取决于数据源。

如果您在服务器端可以在事情发生得到通知,那么我会建议你使用WebSockets或服务器发送事件(SSE),并创建基于蒸汽可观察到的。

这样的服务器发送数据可用时,你不必轮询服务器。使用rxjs

尝试WebSocketSubject https://github.com/ReactiveX/rxjs/blob/master/src/observable/dom/WebSocketSubject.ts

否则您的投票数据的代码看起来不错。

+0

谢谢你的回应。但是,当数据库条目发生变化时,我是否可以在服务器端接收通知,以便我可以通知服务器端代码,这些代码又将创建可观察的代码并可以将数据更改发送到客户端。目前我卡在这里 –

+0

它取决于你使用什么语言/平台/库来访问couchbase。 –