我目前正在考虑创建一个软实时手机webapp,但是当我开始研究websockets时,我发现了大量关于websocket连接的恐慌故事在手机上丢失了:
WebSockets over a 3G connection
http://blog.hekkers.net/2012/12/09/websockets-and-mobile-network-operators/
这仍然可以被视为一个问题吗?
相关地,我怀疑长轮询客户端可能是实现类似功能的好方法,但我想知道我可能遇到的移动特定问题.
到目前为止,我已经读过长时间的轮询请求可能会对电池寿命产生相当大的影响.我还听说iOS以某种方式限制了对单个服务器的连接数量,这可能是个问题.
有没有人在使用实时组件的移动应用程序上工作?如果你有,你遇到了什么挑战,你是如何克服它们的?
解决方法
我使用实时数据构建了几个websocket webapp,它们在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 }