當前位置:遊戲中心平台 - 遊戲盒子 - 如何處理遊戲斷線重連

如何處理遊戲斷線重連

手機遊戲由於網絡不穩定,斷開連接和重新連接非常重要!!!

以前玩王者榮耀,遊戲在後臺。當我進入前臺時,我發現我可能會以加速的方式在後臺播放剛才遊戲的視頻,直到我到達最近的點(這只是我的猜測)。

1.如果網絡狀況異常(比如切換網絡或者當前網絡不穩定),客戶端會觸發斷開連接再連接(此時客戶端網絡已經斷開)。

2.由於網絡延遲和網絡鏈接異常,心跳包無法正常發送到服務器。

這裏可以有兩種判斷方法,壹種是針對服務器的,壹種是針對客戶端的。

3.客戶端裁剪遊戲,客戶端在後臺。壹定時間後,服務器會主動斷開與客戶端的連接,客戶端需要主動觸發重新連接。

主要分為四個階段。

1.連接時記錄網絡類型,切換到前臺,再次獲取網絡類型。如果類型不壹致,您需要重新連接。

2.記錄連接的IP地址,切換到前臺獲取IP。如果IP不同,則需要重新連接。

這裏會出現壹些問題,就是當我們切換網絡的時候,也會出現斷網重連的情況,因為wifi情況下的IP和4g情況下的IP是不壹樣的(這個我還不明白怎麽解決,王者榮耀裏也有這種情況)。

首先,在通信包的協議設計中,每個包頭都包含壹個名為pkgid的字段。

客戶端的每個上行請求包都有壹個下行響應包被服務器壹壹對應,它們的pkgid是壹樣的。

服務器的主動推送包pkgid=0。

客戶端的實現:

客戶端有壹個隊列,記錄發送的請求包,然後在收到服務器的響應後刪除相應的請求。

如果超時後沒有收到響應,可以認為有斷線,重新發送緩存的請求,將pkgid設置為負數來標記重傳包。

重試次數是有限制的。如果超過次數仍得不到回復,會提示斷開連接,退出登錄界面。

服務器的實現:

服務器打開緩存池,記錄壹定數量的最近響應包和通知推送包。

當收到壹個重傳包時,通過player id+pkgid從緩存池中索引最近緩存的響應包,如果緩存命中則直接發出記錄,否則重傳失敗,服務器做線程踢(線程踢完後,客戶端繼續進行登錄過程)。

當客戶端斷開連接時,用戶會進入主機狀態,直到用戶因為主機遊戲再次進入。

  • 上一篇:奇幻傳奇(滿滿GM萬沖)手遊攻略?
  • 下一篇:幼兒園中班數學活動教案:火柴棍拼圖
  • copyright 2024遊戲中心平台