php – Android:聊天APP中的排球超时错误

我正在开发一个聊天应用程序,我正在使用FCM,PHP后端和Volley请求.

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

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

请帮忙.

这是我的代码片段,我在其中调用API:

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都会出现,有时候像登录,注销,聊天等

解决方法:

试试这段代码

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

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...