天天看点

华为联机对战服务断线重连解决方案

网络异常导致掉线场景

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(() => {
    // 初始化失败
  });