我正在创建一个android应用程序,以尽可能快地从服务器获取信息。 我对安全性或保留电池寿命不感兴趣。消息很可能会很小,但会很快(每隔几秒)进入。通信将主要是单向的,但是应用程序与服务器通信的能力将是额外的奖励。最快的android服务器通信
我一直在寻找谷歌云消息传递(GCM),但有关于速度的混合报告。
如何比较HTTP/JSON连接的速度?或者设置服务器将连接的套接字并将消息推送到?
有没有其他的选择我没有考虑过?
编辑: 这将通过WiFi
我正在创建一个android应用程序,以尽可能快地从服务器获取信息。 我对安全性或保留电池寿命不感兴趣。消息很可能会很小,但会很快(每隔几秒)进入。通信将主要是单向的,但是应用程序与服务器通信的能力将是额外的奖励。最快的android服务器通信
我一直在寻找谷歌云消息传递(GCM),但有关于速度的混合报告。
如何比较HTTP/JSON连接的速度?或者设置服务器将连接的套接字并将消息推送到?
有没有其他的选择我没有考虑过?
编辑: 这将通过WiFi
Socket io完全运行它提供了服务器持续连接,因此是相当快的(没有时间上的松动每次连接)。
您可以通过使用一种称为概念实现这一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;
}
你应该尝试的网络插座,而不是简单的HTTP Web服务call..web插座使持续连接与服务器,每当有一些东西在服务器上共享。服务器应该广播它,以便客户端可以在已建立的连接上接收该数据。 –