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。 –