版權聲明:本文為原創文章,轉載請聲明http://www.cnblogs.com/unityExplorer/p/7027659.html 上篇已經把socket的傳輸說的差不多了,這篇主要是說說斷線重連,沒什麼好說的,直接上代碼吧 ...
版權聲明:本文為原創文章,轉載請聲明http://www.cnblogs.com/unityExplorer/p/7027659.html
上篇已經把socket的傳輸說的差不多了,這篇主要是說說斷線重連,沒什麼好說的,直接上代碼吧
1 //斷線重連功能我是用的協程,不建議用線程去重連,因為大多數時候,重連是需要告訴用戶的,使用線程會導致顯示很麻煩 2 int reconnectTime = 0;//重連次數 3 IEnumerator Reconnect() 4 { 5 //關閉socket,上一篇中有定義 6 Close(); 7 reconnectTime++; 8 bool isSuccess = false; 9 //重新初始化socket,獲取初始化結果 10 isSuccess = Init(); 11 if (!isSuccess) 12 { 13 //重連次數小於3次,則再次嘗試重連 14 //超過3次,基本可以確定網路已經斷開了 15 if (reconnectTime < 3) 16 { 17 yield return new WaitForSecondsRealtime(5); 18 StartCoroutine(Reconnect()); 19 } 20 else 21 Debug.Log("網路錯誤"); 22 } 23 else 24 { 25 reconnectTime = 0; 26 //創建一個臨時List,存放未發送出去的消息 27 List<byte[]> lb = new List<byte[]>(); 28 lb.AddRange(sendList); 29 //清空原有消息集合,加入登錄請求後,再加入未發送的消息 30 sendList.Clear(); 31 //重新登錄,AddSendMessageQueue上一篇中已定義 32 AddSendMessageQueue("登錄的protobuf對象", "登錄的消息id"); 33 sendList.AddRange(lb); 34 }