AngularJS具有httpInterceptors,但它们不检测/响应套接字连接丢失

时间:2017-01-17 16:18:56

标签: angularjs node.js cordova sockets

我正在使用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);
              }
          };

感谢。

0 个答案:

没有答案