httpKit长连接问题

TheLostman 发布于 2016/08/09 12:25
阅读 556
收藏 0

@JFinal 在于合作商对接过程中,通信采取了一种长连接方式,每20s post一个请求当做心跳,对方反应说偶尔post会断开,于是跟踪了一下日志,发现使用httpKit.post 时确实有断层,不知为何。截图如下

上图中显示断层持续了3分钟,为了排除程序死掉了这个原因我记录了一个程序心跳,每隔5s打一下日志,如图


从心跳图中可以看出来,程序这期间是正常的,那么问题是:httpKit.post为什么会死掉3分钟无任何动作?

在默认配置下19s超时,这里没有改过参数


加载中
0
JFinal
JFinal

    HttpKit 设置了连接超时与读取超时时间,都是 19 秒,一般认为是够用的时间:

conn.setConnectTimeout(19000);
conn.setReadTimeout(19000);
   尝试修改一下,再反馈结果
JFinal
JFinal
回复 @TheLostman : 我的意思是动动这里的代码,设置的时间更长些
TheLostman
TheLostman
这个默认配置没有动过是沿用的19s
0
DuLerWeil
DuLerWeil

HttpKit作为客户端可以一般性用用,它把http一些细节或者较复杂的过程都封装并隐藏了。这是种取舍,用起来方便也适用很多场景,但涉及到一些深层性的场景时就不太合适。

如果你需要开发一些需要稳定连接的客户端,比如长连接、异常恢复、重发策略等,建议用些httpclient、okhttp之类专门的库。

TheLostman
TheLostman
回复 @JFinal : 为了稳定决定采用httpClient去做这块,谢谢波总指导
TheLostman
TheLostman
好的,谢谢你宝贵的建议
JFinal
JFinal
没错,jfinal 核心定位是 web + orm + aop,不会将 HttpKit 这类工具弄得很复杂,否则光是 HttpKit 代码量起码得增加十倍以上
返回顶部
顶部