最近一直被这个问题困扰, 在 nodejs 中用 websocket,onclose 时 close event 的 code 的是 1000 (正常关闭),但无法查清是本地客户端主动断开的,还是远程服务端断开的。 远程服务端的程序员说他没有关闭, 我这儿也查了,连接后,就一直由心跳包保持,close()函数调都没调。所以就懵了
我想,既然是正常关闭,总有一个 TCP 的 FIN 握手过程,但如何知道是哪一端发起的呢?
求各位大佬给个思路
1
liuyanjun0826 2018-08-20 11:49:02 +08:00 via Android
肯定是远程关的,远程代码无法保证质量,本地代码质量是不会有问题的
|
2
gamexg 2018-08-20 12:41:34 +08:00
没用过 nodejs,但是这个问题抓包可解。
|
3
kingslanding OP @liuyanjun0826 远程代码 /本地代码都是人编的,质量的问题不会出在这个上轻。一个是客户端 nodejs,一个是服务端 swoole
|
4
kingslanding OP @gamexg 一两个星期才出现一次,这个包抓得时间忒长了吧
|
5
NickCarter 2018-08-20 13:22:23 +08:00 via iPhone
我记得有个 close event 里面有个 clean 字段?
|
6
kingslanding OP @NickCarter 有个 wasClean,指示是否 cleanly closed。但不能指示是哪一方开始的
|