Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
若汝棋茗
RRQMSocket
提交
d070bc4a
RRQMSocket
项目概览
若汝棋茗
/
RRQMSocket
10 个月 前同步成功
通知
20
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
RRQMSocket
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d070bc4a
编写于
6月 24, 2023
作者:
若
若汝棋茗
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新resetid文档
上级
60a76216
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
15 deletion
+16
-15
handbook/docs/resetid.mdx
handbook/docs/resetid.mdx
+16
-15
未找到文件。
handbook/docs/resetid.mdx
浏览文件 @
d070bc4a
...
...
@@ -5,33 +5,34 @@ title: 服务器重置ID
## 一、说明
每个客户端在连接时,服务器都会为连接的客户端**新分配**一个唯一的I
D。也就是说,在服务器中ID
与SocketClient实例就是一一对应的。
每个客户端在连接时,服务器都会为连接的客户端**新分配**一个唯一的I
d。也就是说,在服务器中Id
与SocketClient实例就是一一对应的。
## 二、配置初始I
D
策略
## 二、配置初始I
d
策略
默认情况下服务器都会根据**历史连接数量**,为连接的客户端新分配I
D。也就是说,第一个连接的,其ID
就是1,以此类推。
默认情况下服务器都会根据**历史连接数量**,为连接的客户端新分配I
d。也就是说,第一个连接的,其Id
就是1,以此类推。
当然我们可以自由的定义I
D策略,只需要在Config配置中,配置[SetGetDefaultNewID
](../docs/createtcpservice.mdx#setgetdefaultnewid),自定义新ID来源即可。要求不和现连接的客户端ID重复。
当然我们可以自由的定义I
d策略,只需要在Config配置中,配置[SetGetDefaultNewId
](../docs/createtcpservice.mdx#setgetdefaultnewid),自定义新ID来源即可。要求不和现连接的客户端ID重复。
下列示例,就是使用Guid作为初始I
D
。
下列示例,就是使用Guid作为初始I
d
。
```csharp
.SetGetDefaultNewID(()=> { return new Guid().ToString(); })
var config = new TouchSocketConfig();
config.SetGetDefaultNewId(()=>Guid.NewGuid().ToString());
```
## 三、创建能代表连接的ID
上述这种I
D
规范,是与连接信息没有任何关联的,这也就意味着,这种方式是无法关联SocketClient的。
上述这种I
d
规范,是与连接信息没有任何关联的,这也就意味着,这种方式是无法关联SocketClient的。
但往往,有时候,我们希望,SocketClient的I
D
,能一定程度的代表一些信息。例如:以客户端的IP和端口,作为唯一ID。
但往往,有时候,我们希望,SocketClient的I
d
,能一定程度的代表一些信息。例如:以客户端的IP和端口,作为唯一ID。
那这时候,**服务器**可以订阅**Connecting**,然后,为新连接的SocketClient,设置与之有关联信息的ID。
```csharp
m_service.Connecting = (client, e) =>
m_service.Connecting = (client, e) =>
//有客户端正在连接
{
e.I
D
= $"{client.IP}:{client.Port}";
};
//有客户端正在连接
e.I
d
= $"{client.IP}:{client.Port}";
};
```
:::tip 提示
...
...
@@ -42,21 +43,21 @@ m_service.Connecting = (client, e) =>
## 四、即时修改ID
上述修改I
D的方式,应该还不足以应对所有情况。有时候我们希望,在该连接完成,且经过某种验证之后再设置新的ID,那么我们可以通过**ResetID
**的方法,来实现需求。
上述修改I
d的方式,应该还不足以应对所有情况。有时候我们希望,在该连接完成,且经过某种验证之后再设置新的ID,那么我们可以通过**ResetId
**的方法,来实现需求。
### 4.1 通过Service直接修改
```csharp
service.ResetI
D
("oldId","newId");
service.ResetI
d
("oldId","newId");
```
### 4.2 通过SocketClient修改
```csharp
socketClient.ResetI
D
("newId");
socketClient.ResetI
d
("newId");
```
:::note 备注
上述的I
D
标识,仅仅是服务器(TcpService)和辅助客户端(SocketClient)之间的关联。与客户端(TcpClient)是没有任何关系的。
上述的I
d
标识,仅仅是服务器(TcpService)和辅助客户端(SocketClient)之间的关联。与客户端(TcpClient)是没有任何关系的。
:::
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录