最快的android服务器通信

时间:2014-02-06 10:58:23

标签: java android protocols google-cloud-messaging

我正在创建一个Android应用程序,以便尽快从服务器获取信息。 我对安全性或保持电池寿命不感兴趣。消息很可能很小但会快速(每隔几秒钟)。通信将主要是单向的,但应用程序与服务器通信的能力将是一个额外的好处。

我一直在关注Google云消息传递(GCM),但有关此速度的报道不一。

在速度方面如何比较HTTP / JSON连接?或设置服务器将连接的套接字并将消息推送到?

还有其他我未考虑的替代方案吗?

编辑: 这将仅通过WiFi运行

2 个答案:

答案 0 :(得分:1)

Socket io它提供与服务器的持续连接,因此它非常快(每次连接都没有时间松动)。

答案 1 :(得分:0)

您可以使用名为Long Polling

的概念来实现此目的

典型的实施如下:

    @Override
    protected String doInBackground(String... arg0) {
     String result= TIME_OUT;   //public static final String TIME_OUT = time_out_error" 
     while(result.equals(TIME_OUT))
         result = getServerInformation();

     return result;
    }




public String  getServerInformation(){
         String result = null;
        DefaultHttpClient def = new DefaultHttpClient();
        HttpParams httpParams = def.getParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, CONNECTION_TIMEOUT);

        ConnManagerParams.setTimeout(httpParams, CONNECTION_TIMEOUT);
        HttpPost httpPost = new HttpPost(mPushURL);
        httpPost.addHeader("Accept", "application/json");

        try {
            Log.i(TAG, "Executing POST(PUSH) request " + httpPost.getRequestLine());

            HttpResponse httpResponse = def.execute(httpPost);
            Log.i(TAG, result);
            Log.i(TAG, String.valueOf(httpResponse.getProtocolVersion()));
            Log.i(TAG, String.valueOf(httpResponse.getEntity().getContent())); //For testing purposes


        } catch (ClientProtocolException e) {
                 e.printStackTrace();
       } catch (IOException e) {
            e.printStackTrace();
        }
//HERE YOU SHOULD TURN result = TIME_OUT or whatever you want
        return result;

  }