HarmonyOS鸿蒙Next中定位华为实时服务器消息中断问题过程
HarmonyOS鸿蒙Next中定位华为实时服务器消息中断问题过程
问题背景
游戏集成华为联机对战服务的实时服务器13.5版本进行开发时,发现游戏平稳运行大约1分钟左右后,客户端无法正常收到实时服务器的响应,并且无法恢复。
问题在其他接入华为联机对战能力的游戏上并未复现。
问题定位
华为侧:
根据问题现象,首先怀疑是websocket长链断了,找技术看后台日志定位确实。接着定位长链断开原因。怀疑点:1、实时服务器主动断开。2、网络异常。
再次查看实时服务器日志,并未从业务日志中发现中断长链的信息,也没有网络异常的痕迹。
游戏侧:
和其他游戏开发者交流,发现并无类似问题,此时需要结合游戏一起定位,检查了游戏逻辑并无特别之处。
华为侧:
再次查看实时服务器底层的日志,发现问题发生的时间点,都存在worker closed的现象,应该是有未捕获异常导致的。
游戏侧:
发现游戏中有个类中存在循环引用的对象传递给 JSON.stringify() 方法。
问题解决
修改游戏代码后,问题解决。
总结
游戏代码托管到实时服务器,需要游戏进行异常捕获,否则一旦程序异常会导致实时服务器业务中断。
更多关于HarmonyOS鸿蒙Next中定位华为实时服务器消息中断问题过程的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next中定位华为实时服务器消息中断问题过程的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中定位华为实时服务器消息中断问题,可按照以下步骤进行:
- 日志分析:检查系统日志和应用日志,查找与消息中断相关的错误或警告信息。
- 网络诊断:使用网络诊断工具(如ping、traceroute)确认网络连接是否正常,排除网络问题。
- 服务状态:检查华为实时服务器的状态,确认服务器是否正常运行。
- 代码审查:审查相关代码,确保消息发送和接收逻辑正确,无异常处理遗漏。
- 权限检查:确认应用具有必要的网络和消息权限。
- 版本兼容性:检查HarmonyOS和服务器版本是否兼容,必要时进行升级或回滚。