文档:新增websocket课程链接

This commit is contained in:
若汝棋茗
2025-05-16 10:48:34 +08:00
parent 61e25e904d
commit ab244c440e
6 changed files with 47 additions and 0 deletions

View File

@@ -79,6 +79,9 @@ Console.WriteLine($"使用http://127.0.0.1:7789/ApiServer/Sum?a=10&b=20");
```
<BilibiliCard title="初步搭建WebApi服务" link="https://www.bilibili.com/cheese/play/ep1688288" isPro="true"/>
<BilibiliCard title="使用接口或实例类直接注册服务" link="https://www.bilibili.com/cheese/play/ep1709015" isPro="true"/>
<BilibiliCard title="WebApi三种生命周期服务详解" link="https://www.bilibili.com/cheese/play/ep1709016" isPro="true"/>
<BilibiliCard title="使用反射和源生成器注册所有服务" link="https://www.bilibili.com/cheese/play/ep1709017" isPro="true"/>
## 五、参数规则
@@ -267,6 +270,9 @@ public int SumCallContext(IWebApiCallContext callContext, int a, int b)
:::
<BilibiliCard title="在WebApi服务方法中获取调用上下文" link="https://www.bilibili.com/cheese/play/ep1709018" isPro="true"/>
<BilibiliCard title="使用调用上下文完成获取IP、取消调用、日志记录等功能" link="https://www.bilibili.com/cheese/play/ep1709019" isPro="true"/>
### 7.1 获取当前客户端信息
一般来说,调用上下文的`Caller`就是实际通信的客户端,也就是`HttpSessionClient`。

View File

@@ -5,6 +5,7 @@ title: 创建WebSocket客户端
import Tag from "@site/src/components/Tag.js";
import CardLink from "@site/src/components/CardLink.js";
import BilibiliCard from '@site/src/components/BilibiliCard.js';
### 定义
@@ -182,6 +183,8 @@ client.Logger.Info("通过ws://127.0.0.1:7789/postws连接成功");
客户端定义了一些发送方法,方便开发者快速发送数据。
<BilibiliCard title="使用ws完成基本的数据接收和发送" link="https://www.bilibili.com/cheese/play/ep1709023" isPro="true"/>
### 5.1 发送文本类消息
```csharp showLineNumbers
@@ -368,11 +371,15 @@ using (var client = GetClient())
:::
<BilibiliCard title="使用ReadAsync的方式读取ws数据" link="https://www.bilibili.com/cheese/play/ep1709028" isPro="true"/>
### 6.4 接收中继数据
`WebSocket`协议本身是支持超大数据包的,但是这些包不会一次性接收,而是分多次接收的,同时会通过`Opcode`来表明其为中继数据。
<BilibiliCard title="ws接收并处理中继数据" link="https://www.bilibili.com/cheese/play/ep1709029" isPro="true"/>
下面将演示接收文本数据。
【方法1】
@@ -623,6 +630,9 @@ await client.PingAsync();
await client.PongAsync();
```
<BilibiliCard title="ws的Ping和Pong的使用" link="https://www.bilibili.com/cheese/play/ep1709027" isPro="true"/>
:::tip 建议
`WebSocket`是双向通讯,所以支持客户端和服务器双向操作`Ping`和`Pong`报文。但是一般来说都是客户端执行`Ping`,服务器回应`Pong`。
@@ -640,6 +650,8 @@ await client.PongAsync();
})
```
<BilibiliCard title="WebSocket的断线重连以及无人值守模式" link="https://www.bilibili.com/cheese/play/ep1709031" isPro="true"/>
## 八、关闭连接
在使用`WebSocket`时,如果想主动关闭连接,可以使用`CloseAsync`方法,同时可以携带一个关闭原因。
@@ -656,6 +668,8 @@ await webSocket.CloseAsync("关闭");
await webSocket.CloseAsync(WebSocketCloseStatus.EndpointUnavailable,"关闭");//状态码为1001意为服务端不可用。
```
<BilibiliCard title="主动处理ws的Close报文" link="https://www.bilibili.com/cheese/play/ep1709025" isPro="true"/>
## 九、本文示例Demo
<CardLink link="https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/WebSocket/WebSocketConsoleApp"/>

View File

@@ -3,6 +3,8 @@ id: websocketdescription
title: 产品及架构介绍
---
import BilibiliCard from '@site/src/components/BilibiliCard.js';
### 定义
命名空间TouchSocket.Http.WebSockets <br/>
@@ -12,6 +14,8 @@ title: 产品及架构介绍
- WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455并由RFC7936补充规范。WebSocket API也被W3C定为标准。WebSocket使得客户端和服务器之间的数据交换变得更加简单允许服务端主动向客户端推送数据。在WebSocket API中浏览器和服务器只需要完成一次握手两者之间就直接可以创建持久性的连接并进行双向数据传输。 <a name="Sdw1r"></a>
<BilibiliCard title="WebSocket协议特性解析" link="https://www.bilibili.com/cheese/play/ep1709020" isPro="true"/>
## 产品特点
- 简单易用。

View File

@@ -3,6 +3,8 @@ id: websocketheartbeat
title: Websocket心跳设置
---
import BilibiliCard from '@site/src/components/BilibiliCard.js';
### 定义
命名空间TouchSocket.Http.WebSockets <br/>
@@ -12,6 +14,8 @@ title: Websocket心跳设置
Websocket拥有自己的心跳数据格式和响应心跳格式专业名词是Ping和Pong。所以依靠这两个可以直接实现心跳。
<BilibiliCard title="使用ws的心跳数据包" link="https://www.bilibili.com/cheese/play/ep1709032" isPro="true"/>
## 二、心跳配置
#### 2.1 服务器配置

View File

@@ -4,6 +4,7 @@ title: 创建WebSocket服务器
---
import CardLink from "@site/src/components/CardLink.js";
import BilibiliCard from '@site/src/components/BilibiliCard.js';
### 定义
@@ -58,6 +59,8 @@ await service.StartAsync();
service.Logger.Info("服务器已启动");
```
<BilibiliCard title="创建WebSocket服务器和客户端" link="https://www.bilibili.com/cheese/play/ep1709021" isPro="true"/>
### 4.2 验证连接
可以对连接的`Url`、`Query`、`Header`等参数进行验证,然后决定是否执行`WebSocket`连接。
@@ -161,6 +164,8 @@ await service.StartAsync();
service.Logger.Info("服务器已启动");
```
<BilibiliCard title="使用WebApi等多种方法验证ws连接" link="https://www.bilibili.com/cheese/play/ep1709022" isPro="true"/>
【接收连接】
```csharp {16} showLineNumbers
@@ -278,6 +283,8 @@ config.SetServiceSslOption(new ServiceSslOption() //Ssl配置当为null的时
WebSocket服务器接收消息目前有两种方式。第一种就是通过订阅`IWebSocketReceivedPlugin`插件完全异步的接收消息。第二种就是调用`WebSocket`,然后调用`ReadAsync`方法异步阻塞式读取。
<BilibiliCard title="使用ws完成基本的数据接收和发送" link="https://www.bilibili.com/cheese/play/ep1709023" isPro="true"/>
### 5.1 简单接收消息
【定义插件】
@@ -424,6 +431,8 @@ class MyReadWebSocketPlugin : PluginBase, IWebSocketHandshakedPlugin
}
```
<BilibiliCard title="使用ReadAsync的方式读取ws数据" link="https://www.bilibili.com/cheese/play/ep1709028" isPro="true"/>
【使用】
```csharp {16}
@@ -469,6 +478,8 @@ private static HttpService CreateHttpService()
`WebSocket`协议本身是支持超大数据包的,但是这些包不会一次性接收,而是分多次接收的,同时会通过`Opcode`来表明其为中继数据。
<BilibiliCard title="ws接收并处理中继数据" link="https://www.bilibili.com/cheese/play/ep1709029" isPro="true"/>
下面将演示接收文本数据。
【方法1】
@@ -865,6 +876,8 @@ await webSocket.PingAsync();
await webSocket.PongAsync();
```
<BilibiliCard title="ws的Ping和Pong的使用" link="https://www.bilibili.com/cheese/play/ep1709027" isPro="true"/>
### 6.8 发送大数据
发送大数据时,需要分包发送,可以使用`SendAsync`的重载方法,设置`FIN`标志。
@@ -900,6 +913,8 @@ await webSocket.CloseAsync("关闭");
await webSocket.CloseAsync(WebSocketCloseStatus.EndpointUnavailable,"关闭");//状态码为1001意为服务端不可用。
```
<BilibiliCard title="主动处理ws的Close报文" link="https://www.bilibili.com/cheese/play/ep1709025" isPro="true"/>
## 八、本文示例Demo
<CardLink link="https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/WebSocket/WebSocketConsoleApp"/>

View File

@@ -3,6 +3,8 @@ id: wscommandlineplugin
title: 快捷事务命令行
---
import BilibiliCard from '@site/src/components/BilibiliCard.js';
### 定义
命名空间TouchSocket.Http.WebSockets <br/>
@@ -12,6 +14,8 @@ title: 快捷事务命令行
快捷事务命令行,是用于**WebSocket**的快捷事务实现让WS在**Text**文本中,用最简单的文字消息即可完成相关事务的执行。
<BilibiliCard title="WebSocket快捷事务命令行" link="https://www.bilibili.com/cheese/play/ep1709033" isPro="true"/>
## 二、使用
### 2.1 声明事务插件