1: 能正常建立链接🔗,日志显示socket connected,并且回调并打印了 <- OnLongLinkEstablished
2: 建立链接后自动发送的一个noop(cmdid=6)的检测包到服务器,服务器有收到,并返回给我
3:日志有收到并回调打印日志end noop
4: 接下来就显示 [socketbreaker.cc, Clear, 129]: Ret=-1
5: 然后打印了[longlink.cc, __RunReadWrite, 570]:task socket close sock:69, remote disconnect, net_type:task socket close getsocktcpinfo:tcpi_state=0x8,.....的日志
请问这种流程下,是什么情况导致的呢
3条答案
按热度按时间izj3ouym1#
你好请问解决了吗。我这边也是连接上之后自动发送一个心跳,服务器也回复了一个一样的心跳。
然后我发送一个消息给服务器,服务器也收到了,但是服务器马上返推一个消息的时候,本地socket关闭了。
多次测试应该就是反推消息的时候,socket被关闭。不知道流程什么情况?
4ngedf3f2#
我这边也是会断开。
目前情况是,连接服务器后,服务器返回一个心跳包,客户端就正常不会断开。
但是客户端发送信息给服务端后,服务端收到消息,返回任意内容,就断开了。
@garryyan 大佬能帮忙看下什么原因吗?
下面是我测试的数据,cmdid我改成24(十六进制是18)了。
仔细看13:30:44和13:30:57,在客户端发了两条非心跳包消息后,连接就断开了。
下面是报错的日志:
xfb7svmp3#
我也发现了这个问题。在代码里longlink.cc里。心跳包只要超时,立马断开重连
代码:
然后在退出循环。
感觉和他们 写的文档有很大的出路
补充:
我发现原因了,有一个longlink_noop_isresp 函数指针需要实现。判断接收回来的包是否是心跳包。由于我们的服务器发送的心跳cmdid和收接的心跳cmdid 不一样,而参考代码是一样的。