0

私はAngular 2 WebアプリケーションのデータベースとしてCouchbase Serverを使用しています。データの交換は、私のCouchBaseサーバーと通信するWebAPIを介して行われます。 私はデータ角度2を使用して観測可能データの連続ストリームを表示する

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); 
} 

の更新リストを取得するために、私は、これは現時点ではまだそれを行うための正しい方法であれば、私は5秒ごとにWebAPIのために(ポーリング)を照会してるかわかりません被監視オブジェクトを使用すると、これを行うための正しい方法か、私が持っている疑問がある

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

非同期パイプを使用してUI上のリストにバインドするために、この呼び出しから返さ WebAPI呼び出しが繰り返し行われるため、サーバーに負荷をかけすぎませんか? これは、データの連続的な流れを処理する方法ではない場合、より良い選択肢を提案することができます。

答えて

0

データソースによって異なります。

何かが発生したときにサーバー側で通知を受け取ることができる場合は、WebsocketsまたはServer Sent Events(SSE)を使用し、その蒸気に基づいてObservableを作成することをお勧めします。

このように、サーバーはデータが使用可能になったときにデータを送信し、サーバーをポーリングする必要はありません。

はrxjsを使用してみてくださいそれ以外の場合は、ポーリング・データのコードがよさそうだ https://github.com/ReactiveX/rxjs/blob/master/src/observable/dom/WebSocketSubject.ts

をWebSocketSubject。

+0

ありがとうございます。しかし、データベースエントリに変更があったときはいつでも、サーバ側で通知を受け取る方法があるので、サーバ側のコードに通知してオブザーバブルを作成し、クライアントにデータ変更を送信することができます。現時点で私はここにこだわっています –

+0

それはあなたがアクセスcouchbaseのために使用している言語/プラットフォーム/ライブラリに依存します。 –

関連する問題