华为联机对战服务断线重连解决方案
游戏过程中,常常会产生网络稳定等异常情况,导致玩家掉线,此时如果网络复原仍心愿玩家退出到原游戏中,能够通过上面的形式进行重连。容许重连工夫能够在 AppGallery Connec 控制台进行设置。
网络异样导致掉线场景
网络异样导致玩家客户端与联机对战服务端连贯不上,在肯定周期后服务器会将该玩家设置会掉线状态,如果游戏容许玩家在短时间内网络复原后从新接入网络则须要应用掉线重连贯口实现该场景。
具体是玩家进入房间后,游戏通过 room.onDisconnect(playerInfo) 办法监听玩家掉线事件,该办法会返回玩家信息。判断如果是玩家本人掉线,则须要触发 room.reconnect() 办法重连, 重连过程如果网络始终未复原则始终尝试重连,如果网络复原则依据后果解决,可能超过容许重连工夫则跳转到其余游戏页面。
room.onDisconnect((playerInfo) => {
// 以后玩家断线
if(playerInfo.playerId === room.playerId){
// 重连逻辑
reConnect();}else{// 其余玩家掉线解决}
}
reConnect() {
// 调用重连办法进行重连
room.reconnect().then(() => {// 重连胜利}).catch((e) => {if (!e.code) {
// 网络不通持续重试
this.reConnect();
return;
}
if (e.code != 0) {// 超过容许重连工夫退出到其余页面}
});
}
敞开客户端导致掉线
玩家敞开客户端从新关上后仍心愿重连上一局游戏,此时能够在初始化接口返回中判断玩家是否依然在无效房间内,如果依然在阐明其依然在容许重连工夫内,能够应用退出房间接口重新加入。如果此时不心愿退出上一局游戏,则必须先调用接口来到该房间能力从新失常创立房间。
client.init().then(() => {
// 初始化胜利
if(client.lastRoomId){
// 以后玩家仍在上一房间内,可依据 lastRoomId 重新加入房间
// 如果不想退出上一个房间内,必须通过 client.leaveRoom 来到房间,否则新建房间或匹配房间时会报错:玩家已在房间内
}
}).catch(() => {// 初始化失败});