背景是公司项目需要看广告和调用支付,发现触发这两个行为回到游戏之后会断线。故在时间有限的前提下做了个简易的重连方案,看了论坛和群里也查了去多资料发现没有人完整分享过这块,就拿来分享下拙见。有不同意见欢迎交流。
先写一个重新登陆的方法,跟启动登陆不同的是,重新登陆前端不显示一切UI画面,只显示重连等待界面。后端走正常登陆流程。时间有限粗暴了点,但肯定能用。
1.在ET7.2中的软路由组件,自身会有一个自动重连,规则是7秒没有信息交互就尝试重连,尝试6秒。我在6秒结束失败之后调用重新登陆方法。
2.做一个pause的回调,pause=false的时候判断当前的session若已经超时或已经销毁则启动重新登陆。
3.全局加了一个ping字段,在pingcomponent里面心跳时设置全局的ping值,当销毁或catch时设置为460,网络超时。
4.当触发广告播放成功回调时,先等待100ms,判断ping值,如果<460则网络通畅,通知服务器下发奖励。否则等待500ms重新判断ping值。直到重连成功网络通畅。(体验是如果走了重登逻辑,那么奖励等待重连成功后下发,大概是1~2s上下的时间。)