gpt4 book ai didi

java - Android https 长轮询 : Cannot receive response when polling interval is longer than 70 seconds

转载 作者:行者123 更新时间:2023-11-30 09:51:21 26 4
gpt4 key购买 nike

我正在尝试在我的 android 应用程序上实现一个长轮询推送服务(基于 Microsofts AUTD ActiveSync -> http://technet.microsoft.com/en-us/library/aa997252.aspx)。

我已经实现了在Tomcat 7.0 上运行的Servlets 3.0 的服务器部分。我已经用 CURL 测试了我的 AsyncServlets,一切正常。

这就是我测试 AsyncServlet 的方式:

curl "https://webservice.mydomain.net/push?id=1&heartbeat=180000" --insecure --user user:password -D -

3 分钟后服务器响应(心跳间隔)

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 01:00:00 CET
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 0
Date: Sat, 15 Jan 2011 23:38:57 GMT

在我的 android 应用程序中,我使用了以下代码:

HttpParams httpParams = mDefaultHttpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpParams, mHeartbeat + TIMEOUT_TOLERANCE);
mDefaultHttpClient.setParams(httpParams);

HttpGet httpGet = new HttpGet(mPushURL);
httpGet.addHeader("Accept", "application/json");

try {
Log.i(TAG, "Executing GET(PUSH) request " + httpGet.getRequestLine());
HttpResponse httpResponse = mDefaultHttpClient.execute(httpGet);
Log.i(TAG, httpResponse.getStatusLine().toString());
Log.i(TAG, convertInputStream(httpResponse.getEntity().getContent())); //For testing purposes
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

我进行了几次测试。如果我使用 70 秒心跳间隔,我会收到响应。如果我使用 > 70 秒的心跳间隔,我会收到(在指定的心跳间隔之后)一个 SocketTimeoutException 而不是我的 HTTP 200 OK 响应。 (澄清一下:我设置的 SocketTimeout(SoTimeout) 工作正常,但可能连接丢失了,我不知道为什么)。

感谢您的每一个回复。

最佳答案

使用 URLConnection 并设置 readTimeOut。买就难说了。我认为 android 网络层正在卡住打开的连接。 (我正在做类似的项目。找不到打开的连接卡住的原因)

关于java - Android https 长轮询 : Cannot receive response when polling interval is longer than 70 seconds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com