---
id: reconnection
title: 断线重连
---

import Tag from "@site/src/components/Tag.js";

### 定义

命名空间：TouchSocket.Sockets <br/>
程序集：[TouchSocket.dll](https://www.nuget.org/packages/TouchSocket)

## 一、说明

所谓断线重连，即tcp客户端在断开服务器后，主动发起的再次连接请求。

## 二、使用Reconnection插件

使用断线重连非常简单，仅一行代码完成。

```csharp showLineNumbers
.ConfigurePlugins(a=> 
{
   a.UseReconnection(5, true, 1000);//如需永远尝试连接，tryCount设置为-1即可。
});
```
:::caution 注意

**断线重连，必须满足以下几个要求：**

1. 必须完成第一次连接
2. 必须是被动断开，如果是客户端主动调用Close、Disconnect等方法主动断开的话，不会生效。
3. 必须有显式的断开信息，也就是说，直接拔网线的话，不会立即生效，会等tcp保活到期后再生效。

:::  


## 三、使用Polling轮询连接插件

使用Polling断线重连，是一种无人值守的连接方式，即轮询式连接，使用也非常简单，仅一行代码完成。

```csharp showLineNumbers
.ConfigurePlugins(a=> 
{
   a.UseReconnection()
    .SetTick(TimeSpan.FromSeconds(1))
    .UsePolling();

});
```

:::caution 注意

**Polling重连，必须满足以下几个要求：**

1. 必须有显式的断开信息，也就是说，直接拔网线的话，不会立即生效，会等tcp保活到期后再生效。

:::  

:::tip 提示

UseReconnection插件，可以通过设置SetActionForCheck，自己规定检查活性的方法。默认情况下，只会检验Online属性，所以无法检验出断网等情况。如果自己控制，则可以发送心跳包，以保证在线状态。

:::  