UN6L2——实现断线重连

断线重连

有时我们会因为遇到意外情况而非自愿的断开与服务器的连接(如网络不好等情况)
因此,我们为断开连接的Close​方法添加一个参数,用来表示是否是客户端自己断开连接
如果不是,就可以弹出一个界面询问客户是否断线重连

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public void Close(bool isSelf = false)
{
if (socket != null)
{
QuitMessage msg = new QuitMessage();
socket.Send(msg.Writing());
socket.Shutdown(SocketShutdown.Both);
socket.Disconnect(false);
socket.Close();
socket = null;
}
//不是自己主动断开连接的
if (!isSelf)
{
//断线重连,弹出一个面板,选择是否重连
//if (是否重连)
// Connect(ip, port)
}
}

//销毁时就是自动断开连接
private void OnDestroy()
{
Close(true);
}

断线重连与运行时刚开始连接还不同,服务端可能要给重连的客户端发送一些恢复状态的消息(如:上次断开连接时玩家所在的位置)
因此可能需要特殊的处理逻辑,这取决于你的项目需求