我正在使用Cordova开发一个Angular应用程序,由于无响应的http服务(没有连接丢失但没有响应),或者在套接字级别断开连接后,它没有超时。添加一个设置超时的简单httpInterceptor解决了无响应服务器的问题,但是如果请求已经发送然后套接字连接丢失,应用程序仍然不会超时或检测到连接丢失。
一种简单的测试方法是:在Ripple上,打开TCPViewer等连接管理器,触发对服务器的http客户端调用,然后强制断开TCP连接(端口80)。在iOS或Android等设备上,请在发出请求后启用飞行模式。
应用程序将无限期地等待响应,并且必须关闭并重新启动。
有没有人知道如何捕获此连接丢失事件?使用的特定拦截器代码如下:
.factory('timeoutInterceptor', ['$q', '$timeout', function ($q, $timeout) {
return {
request: function (config) {
config.timeout = $timeout(function () { config.timedOut = true }, 30000);
return config;
},
responseError: function (rejection) {
return $q.reject(rejection);
}
};
感谢。