我目前正在考虑创建一个软实时手机web应用程序,但是当我开始研究websockets时,我发现了一堆关于websocket连接在手机上脱落的可怕故事:
基于3G连接的WebSockets
http://blog.hekkers.net/2012/12/09/websockets-and-mobile-network-operators/这还能被认为是一个问题吗?
与此相关,我怀疑长轮询客户端可能是实现类似功能的好方法,但我想知道我可能遇到的移动特定问题。
到目前为止,我读到长轮询请求可能对电池寿命有相当大的影响。我还听说iOS以某种方式限制了连接到单个服务器的数量,这可能是个问题。
你们中有人开发过带有实时组件的移动应用程序吗?如果有过,你遇到过哪些挑战,你是如何克服的?
我用实时数据构建了几个websocket web应用程序,它们在iPhone和移动设备上表现得非常好。Websockets使用ping/pong连接来查看连接是否仍然存在。导致断开连接的事情:
- 如果你关闭应用程序,那么连接将被丢弃(在iOS网络应用中)。
- 如果网络宕机(wifi/3g/4g),那么连接将被断开,并且无法恢复在丢失时间内发送的任何内容。
注意事项:
-
在javascript的onclose部分编写一个简单的重连接例程,在一定的秒数后尝试重新连接。
function connect(){ websocket = new WebSocket("wss://myws:5020"); websocket.onclose=function(event){ console.log(event); setTimeout(connect,5000); //re-connect after 5 seconds //..and so on }