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