2014-02-06 51 views
1

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

我一直在寻找谷歌云消息传递(GCM),但有关于速度的混合报告。

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

有没有其他的选择我没有考虑过?

编辑: 这将通过WiFi

+0

你应该尝试的网络插座,而不是简单的HTTP Web服务call..web插座使持续连接与服务器,每当有一些东西在服务器上共享。服务器应该广播它,以便客户端可以在已建立的连接上接收该数据。 –

回答

1

Socket io完全运行它提供了服务器持续连接,因此是相当快的(没有时间上的松动每次连接)。

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; 

    }