我正在开发一个AngularJS驱动的SPA。我想要显示一个全屏覆盖图,上面写着"对不起 - 服务器不可用atm"一旦客户端和服务器之间的连接中断。
所以我写了一个简单的while(true)
循环,基本上只是调用/api/ping
,它总是返回true
。当没有http响应时,则该消息将出现。
我不喜欢这种方法,因为它会产生很多开销。特别是考虑移动连接。
那么对我的案子来说什么是一个不错的解决方案?
我可以想象使用websocket和onInterrupted
(或类似)事件。
答案 0 :(得分:0)
基本上,当HTTP端点处于离线状态时,您将收到HTTP/404 Not found
状态代码。
我想说应该更好等待错误而不是超时查询服务器以检查它是否在线。
Use Angular $http
provider's interceptors以捕获所有不成功的HTTP状态代码,并在您捕获向用户显示通知时通知服务器没有可用连接或服务器处于脱机状态时执行操作。
答案 1 :(得分:0)
使用WebSockets,您仍然需要某种ping机制,因为在非活动/非常慢的连接和丢弃的连接之间在功能上没有区别。
话虽如此,有关线路流量的开销要低得多,因为每个请求都没有发送HTTP头,这也会降低处理开销。