engine-native icon indicating copy to clipboard operation
engine-native copied to clipboard

Android Cocos2dxDownloader OkHttpClient 超时设置

Open justbilt opened this issue 5 years ago • 1 comments

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();

justbilt avatar Jun 23 '20 09:06 justbilt

new jsb.Downloader({
            timeoutInSeconds: 45 * 60,
            countOfMaxProcessingTasks: 6,
            tempFileNameSuffix: ".tmp",
        });

可以按照需求自己加参数。

Visow avatar Nov 03 '23 07:11 Visow