【问题标题】:Why am I getting a timeout in the chat app?为什么我在聊天应用程序中出现超时?
【发布时间】:2019-01-25 16:09:10
【问题描述】:

我正在开发一个聊天应用程序,我在其中使用 FCM、PHP 后端和 Volley 来处理请求。

最初,当我登录到我的应用程序时,聊天工作正常且快速,但一段时间后开始出现截击超时错误,并且由于我没有使用任何重试策略,聊天消息会丢失。

如果我增加套接字超时并使用重试策略,那么应用就会挂起。

这是我调用 API 的代码 sn-p:

public void doNetworkRequest(int type, String url, final HashMap<String, String> params, Response.Listener requestListener, Response.ErrorListener errorListener) {
        StringRequest mRequest = new StringRequest(type, url, requestListener, errorListener) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                return params;
            }


            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<String, String>();
                return headers;
            }
        };
//        int socketTimeout = 500000;
//        RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
//        mRequest.setRetryPolicy(policy);
        mQueue.add(mRequest);
    }

这个问题几乎每个 API 都会出现,有时像登录、注销、聊天等。

【问题讨论】:

  • 您使用的是什么版本的 Volley?
  • @Andy:凌空版本:1.0.0
  • 当我使用 volley 1.1.1(最新版本)时出现同样的问题
  • @Sangeeta 我认为您的服务器没有响应。所以你得到超时错误..
  • 你试过用“邮递员”还是其他方式?它做得好吗?你确定它不是来自服务器端吗?

标签: android android-volley


【解决方案1】:
request.setRetryPolicy(new DefaultRetryPolicy(DEFAULT_TIMEOUT_MS, 
DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

增加您的DEFAULT_TIMEOUT_MS

【讨论】:

    【解决方案2】:

    试试这个代码

    request.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1, 1.0f));
    

    这是用于重试失败的请求和自定义请求超时

    【讨论】:

      【解决方案3】:

      这可能是因为 API 调用频繁完成并被挤压。如果您使用 Android Studio 进行开发,请检查 Android Monitoring 选项卡中的网络事务。您将了解同时发送了多少网络查询。

      作为解决方案: 你可以做一个发送请求的管道。存储聊天消息和状态位的 HashMap 值。每个请求在前一条消息同步时开始。在这种情况下,您不需要计时器或重试策略(除非网络频繁失败,即使是单个请求)

      【讨论】:

      • 我正在使用 Volley,所有请求都按顺序执行
      猜你喜欢
      • 2023-02-25
      • 2014-05-10
      • 2019-06-02
      • 2015-10-12
      • 2014-07-19
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多