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 }
由于环境不同关系,并非所有的博客内容都会上传完整的源码,大部分的源码,大家可以到我的github主页上的UGCFramework查找
传送门:https://github.com/wulonghao/UGCFramework