游戏上正式服测试的时候,发现一个问题:每5分钟,socket长连接会自动中断。
检查了客户端和服务器的程序之后,都没发现主动断掉socket的逻辑,而且之前在内网测试也没出现这个问题!
初步怀疑是F5,但是短时间内没法查明原因!
一开始的解决办法,是在客户端加定时心跳,但是在实际使用中,遇到一个绕不过去的坑,就是如果游戏被挂起超过5分钟,这个心跳就不起作用了,两种情况会造成这个结果:
(1)游戏进Home后台(2)游戏切换到sdk的支付界面。
最后的解决办法是在服务器端加了心跳,针对用户的最后一条下行之后4分钟发一条广播心跳,每隔1小时断开所有没有上行的socket长连接,回收资源!
不够体面,但是work!