如何在Angular 2中实现http长轮询

时间:2017-06-06 13:56:51

标签: javascript node.js angular http

我有一个用例如下:

  • 用户选择要上传到其个人资料的视频。
  • 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长投票吗?

1 个答案:

答案 0 :(得分: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();
}
相关问题