unity探索者之socket传输protobuf字节流(四)

版权声明:本文为原创文章,转载请声明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         }                

 

posted @ 2017-06-16 15:12  半颗星辰  阅读(1495)  评论(0编辑  收藏  举报