我正在创建一个Android应用程序,以便尽快从服务器获取信息。 我对安全性或保持电池寿命不感兴趣。消息很可能很小但会快速(每隔几秒钟)。通信将主要是单向的,但应用程序与服务器通信的能力将是一个额外的好处。
我一直在关注Google云消息传递(GCM),但有关此速度的报道不一。
在速度方面如何比较HTTP / JSON连接?或设置服务器将连接的套接字并将消息推送到?
还有其他我未考虑的替代方案吗?
编辑: 这将仅通过WiFi运行
答案 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;
}