2017-06-06 117 views
1

長輪詢我有如下的使用情況:如何實現HTTP在角2

  • 用戶選擇的視頻被上傳到自己的個人資料。
  • Angular向node.js服務器發送請求,該請求返回Amazon S3預先簽名的URL。
  • 瀏覽器'直接'將文件上傳到S3。
  • Elastictranscoder開始轉碼視頻。
  • AWS-SNS遵循https端點來通知node.js轉碼完成的後端。

如何反映這個事實,視頻現在在Angular方面可用?

我正在做類似於下面的事情,它工作正常,但我不確定是否正確處理了錯誤情況?我應該做更多的事情嗎?

startLp(): Observable<any> { 
    return this.http 
    .get("/getvideostatus?video-id=blah", { headers: this.headers }) 
    .map(res => { 
     return res.json(); 
    }) 
    .catch((error: any) => Observable.throw(error.json().error || 'Server error')); 
} 

這只是一個普通的http請求,唯一的區別是服務器沒有立即返回響應。

這是否構成一個有效的http長輪詢?

+0

我使用SignalR爲 –

+0

你爲什麼不乾脆用socket.io?長期投票是笨拙的。 –

+0

@VolodymyrBilyachat,我使用node.js – kmansoor

回答

0

這是我落得這樣做:

public startLp(): Observable<any> { 
let that = this; 
let doLp = function(): Observable<any> { 
    return that.http 
    .get("/getvideostatus?video-id=blah", { headers: that.headers }) 
    .map(res => { 
     return res.json().data 
    }) 
    .catch((error: any) => {      
     return doLp(); 
    }); 
}; 

return doLp(); 
} 
+2

這實際上是LP嗎?它看起來正常http請求給我。你如何做到這樣http請求保持打開所需的時間,並聽取更改? –