【问题标题】:Can Websockets Work On Mobile Phones?Websockets可以在手机上工作吗?
【发布时间】:2014-10-09 05:25:07
【问题描述】:

我目前正在考虑创建一个软实时手机 webapp,但是当我开始研究 websockets 时,我发现了很多关于 websocket 连接在手机上丢失的可怕故事:

WebSockets over a 3G connection

http://blog.hekkers.net/2012/12/09/websockets-and-mobile-network-operators/

这仍然可以被认为是一个问题吗?

与此相关,我怀疑长轮询客户端可能是实现类似功能的好方法,但我想知道我可能会遇到的移动特定问题。

到目前为止,我了解到长时间轮询请求可能会对电池寿命产生相当大的影响。我还听说 iOS 以某种方式限制了与单个服务器的连接数,这可能是个问题。

你们中的任何人都曾开发过带有实时组件的移动应用程序吗?如果遇到过,您遇到了哪些挑战,您是如何克服的?

【问题讨论】:

  • 我也有兴趣看到这个问题的答案

标签: ios mobile websocket comet long-polling


【解决方案1】:

我已经构建了几个带有实时数据的 websocket webapps,它们在 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
     }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多