我想知道应该为我的改造客户设置多少秒。

  • 我应该使用几秒钟作为默认超时时间?
  • OkHttp/Retrofit的默认超时是多少,我们应该让默认值吗?
  • 最佳答案

  • 没有神奇的值(value),取决于您对后端的期望。如果有人告诉您5s是一个很好的值,并且在最大负载时间下,您在一个端点上的平均值为8s,则8s对您不起作用。作为一般值,我已经看到低于10s被认为是短的,而介于10s和20s之间是常见的。


  • OkHttp 3.4.1 Retrofit 2.1.0 开始,OkHttp的默认值为10秒。改造依赖于OkHttp默认值。

  • 改造代码段:(如果您不提供OkHttpClient):
      okhttp3.Call.Factory callFactory = this.callFactory;
      if (callFactory == null) {
        callFactory = new OkHttpClient();
      }
    

    OkHttp代码段:
      connectTimeout = 10_000;
      readTimeout = 10_000;
      writeTimeout = 10_000;
    

  • 我可以访问的唯一Google App是Google IO应用程序。

  • 他们使用不同的值。例如对于feedback相关,他们使用:
    public class FeedbackConstants{
    
    public static final int FEEDBACK_CONNECT_TIMEOUT_MS = 15000;
    
    public static final int FEEDBACK_READ_TIMEOUT_MS = 15000;
    
    public static final int GOOGLE_API_CLIENT_CONNECTION_TIMEOUT_S = 10;
    

    }

    他们正在使用Volley,有时也会在can take a look上使用。是的,它们看起来很短。
    /** The default socket timeout in milliseconds */
        public static final int DEFAULT_TIMEOUT_MS = 2500;
    

    different http client中,他们为您提供了一些有关他们认为是短暂且合理的短暂超时的线索。
        /**
         * Default 2s, deliberately short. If you need longer, you should be using
         * {@link AsyncHttpClient} instead.
         */
        protected int connectionTimeout = 2000;
        /**
         * Default 8s, reasonably short if accidentally called from the UI thread.
         */
        protected int readTimeout = 8000;
    

    10-06 12:43
    查看更多