情况描述
Android真机、Wifi网络
游戏启动后不进行其它操作,Socket层提供了和服务器心跳交互,每隔30秒进行一次。
放置手机一段时间(时间不等,从几分钟到几十分钟),客户端报错:System.Net.Sockets.SocketException (0x80004005): Network subsystem is down
。
通过堆栈可以看到异常发生在Socket异步接收消息的回调函数中。
原因
未能定位到具体原因,猜测有可能是Wifi网络导致的,比如Wifi休眠,或者硬件层检测到数据量低断了机器的网络连接。
可以参考UWA上的一个相同问题的帖子
解决方案
笔者又在安卓4G网络和客户端PC网络中进行测试未复现该问题,且上述链接也提到并不是所有安卓手机都有该问题。因此对该问题按照断线重连的方案进行处理。