“套接字挂断”错误没有被带有rxjs的node.js捕获

时间:2016-12-04 17:24:12

标签: node.js rxjs

我的节点应用上出现了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

处理流上的错误

有什么建议吗? 感谢

0 个答案:

没有答案