engine-native
engine-native copied to clipboard
Android Cocos2dxDownloader OkHttpClient 超时设置
https://github.com/cocos-creator/cocos2d-x-lite/blob/v2.4.1/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxDownloader.java#L98
new OkHttpClient().newBuilder()
.followRedirects(true)
.followSslRedirects(true)
.callTimeout(timeoutInSeconds, TimeUnit.SECONDS)
.build();
根据 OkHttp 的 callTimeout 文档 应该是整个请求的完成时间, 这与我们的设计是否有出入? 这里使用 callTimeout 是否合理?
经过测试, 如果这个时间设置的较小, 下载文件的时间大于这个时间时必然会下载失败:
java.net.SocketException: Socket closed
或
okhttp3.internal.http2.StreamResetException: stream was reset: CANCEL
经过测试, 将 callTimeout 换为 connectTimeout/writeTimeout/readTimeout 可以满足需求.
new OkHttpClient().newBuilder()
.followRedirects(true)
.followSslRedirects(true)
.connectTimeout(timeoutInSeconds, TimeUnit.SECONDS)
.writeTimeout(timeoutInSeconds, TimeUnit.SECONDS)
.readTimeout(timeoutInSeconds, TimeUnit.SECONDS)
.build();
new jsb.Downloader({
timeoutInSeconds: 45 * 60,
countOfMaxProcessingTasks: 6,
tempFileNameSuffix: ".tmp",
});
可以按照需求自己加参数。