2017-10-16 67 views
0

Im對Angular來說是新的,在整個訂閱/觀察事物上仍然不是100%。Angular實現一個訪問web服務的狀態線程

我有一個web服務,當被調用時將返回一個我的網站感興趣的狀態對象。web服務的設置方式,它將保持連接打開30秒,如果沒有新的報告將關閉在這一點上,我應該重新提交我的身份請求等等。這種方式總是有一個到web服務的連接。

如何在角度上做到這一點?我需要做一個服務,將不斷ping這個web服務的狀態,但正常的HTTP客戶端observable是一個可以觀察。我甚至不完全確定如何設置異步線程。

狀態端點將返回一個狀態對象,其中可能包含要顯示在屏幕上的新數據。

回答

1

您可以使用Observable.interval

class SomeService { 
    public statusPing$: Observable; 

    constructor(private http: HttpService) { 
    this.statusPing = Observable.interval(30000) 
     .switchMap(http.get('/api/ping/your_slug')) 
    } 
} 

注意事項:

  1. 您需要導入interval運營商(我只列出了相關的代碼)。

  2. 您可能要進一步映射響應((respones) => response.json()

  3. 您必須進行觀察的熱點,這意味着,在某處你的代碼做svc.statusPing$.subscribe()

+0

謝謝,這聽起來很有希望。將嘗試一下。 – Curtis

+1

@Meir FYI你寫的使用'Observable.interval',但在你的例子中你使用'Observable.timer'。 – cyrix