ECONNRESET分析与解决

给项目升级jetty插件,对应的NodeJS的集成测试脚本出现了问题,集体出现了ECONNRESET。
作为一只单纯的Java犬,对此表示束手无策,于是开始走上了漫漫尝试之路。

Node部分通信是用的co-request模块?
换成request模块总成了吧,嗯,一定是酱紫,我简直太聪明了。
然而换成了request模块,并没有什么卵用…

请教Node的全栈童鞋,被告知,只有API的后缀为.json的时候才会出现这个问题。突然豁然开朗,我可以把所有接口都改后缀啊!
嗯… 相信我,如果我真那么做了,估计也活不到写这篇分析的时候了。

嗯,那就接着换吧,换成http模块总成了吧。绝对是这样的,擦亮我的双眼!
然而换成了http模块,还是没有什么卵用…

一系列试错之后,开始用科学的方法解救自己!抓个包看看吧~
升级之后的HTTP报文
哇塞,http模块想不到你那么牛,结束协议该发[FIN,ACK]的地方你还发ACK,你咋不上天呢…

那原来这货是怎么蒙混过关的?再抓个包看看吧~
ECONNRESET分析与解决_第1张图片
原来是对的?http模块,想不到你那么牛,依赖对方的输入决定自己怎么实现TCP协议,你咋不上天呢…
对比了半天返回内容,明白了,你原来就因为返回值多了一个Date,你就决定更改TCP实现,你咋不上天呢…

附内容对比:
-----------------------------------
POST /4/recyclebin/person/54195/empty.json HTTP/1.1
Content-Type: application/json
Token: b98fc1a1ceed8caf6def4fd4e01e15ec700e648c
Date: Fri, 18 Mar 2016 08:33:24 GMT
Key: adesedfd
Authorization: a0662d12dbb8f97895aa76fb47fc922b349c1806
Host: 127.0.0.1:8080
Connection: close
Content-Length: 0
HTTP/1.1 200 OK
Date: Fri, 18 Mar 2016 08:33:24 GMT
Connection: close
Server: Jetty(9.3.0.M2)
-----------------------------------
POST /4/recyclebin/person/54195/empty.json HTTP/1.1
Content-Type: application/json
Token: b98fc1a1ceed8caf6def4fd4e01e15ec700e648c
Date: Fri, 18 Mar 2016 08:43:57 GMT
Key: adesedfd
Authorization: f22cc35473362c6a6934ed355aebcca42c696fcf
Host: 127.0.0.1:8080
Connection: close
Content-Length: 0
HTTP/1.1 200 OK
Connection: close
Server: Jetty(8.1.16.v20140903)
-----------------------------------
最后确定了错误是由于http模块激动的不会关TCP导致的,内容并不会有误差,所以安心的监听error事件,然后先忽略就好了,坐等HTTP模块的升级~

你可能感兴趣的:(案例笔记)