我的节点应用上出现了Socket Hang Up
个随机错误。我的应用程序将超过1,000张图像发布到服务器进行处理,它发生在随机点,因此很难重现。令人讨厌的是,它通常发生在您认为不会发生的时候!
我正在使用RXJS,我在这里为节点http函数创建了一个包装器库:
https://github.com/Roaders/rx-http-ts
执行请求的代码是:
export function makeHttpRequest(options: http.RequestOptions, data?: any): Rx.Observable<string>{
return Rx.Observable.defer(() => {
const request = options.protocol === HTTPS ? https.request(options) : http.request(options) ;
const errorObservable = Rx.Observable.fromEvent(<any>request, "error")
.flatMap(error => {
return Rx.Observable.throw(error);
});
const responseObservable = Rx.Observable.fromEvent(<any>request, "response");
if(data){
request.write(data);
}
request.end();
return responseObservable.merge(errorObservable)
.take(1);
})
.flatMap( response => RxNode.fromReadableStream(<any>response))
.toArray()
.map(function(allData){
return allData.join("");
});
}
我不明白我是如何得到这个错误的,并且它没有被抓住。我正在侦听来自请求对象的错误事件,并且应该由RxNode.fromReadableStream
有什么建议吗? 感谢