Websockets可以在移动电话上工作吗?

时间:2014-08-15 13:13:23

标签: ios mobile websocket comet long-polling

我目前正在考虑创建一个软实时手机网络应用程序,但是当我开始研究websockets时,我发现了大量关于在手机上丢失的websocket连接的恐怖故事:

WebSockets over a 3G connection

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

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

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

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

您是否有人使用实时组件处理移动应用程序?如果你有,你遇到了什么挑战,你是如何克服它们的?

1 个答案:

答案 0 :(得分:5)

我使用实时数据构建了几个websocket webapp,它们在iphone和移动设备上表现非常出色。 Websockets保持ping / pong连接以查看连接是否仍然存在。导致断线的事情:

  • 如果关闭应用程序,将断开连接(在iOS网络应用程序上)。
  • 如果网络确实关闭(wifi / 3g / 4g),您将被丢弃并且无法恢复在该丢弃时间内发送的任何内容。

考虑:

  • 将一个简单的重新连接例程写入javascript的onclose部分,该部分尝试在一定时间后重新连接。

    #include <vector>
    #include <algorithm>
    using namespace std;
    template <typename T> T max_sub_array (vector<T> const & numbers)
    {
        T max_ending = 0; max_so_far = 0;
        for(auto & number: numbers)
        {
            max_ending = max(0, max_ending + number);
            max_so_far = max(max_so_far, max_ending);
        }
        return max_so_far;
    }