文档:修改代码不兼容项

This commit is contained in:
若汝棋茗
2025-05-11 20:57:10 +08:00
parent fa0aeb456e
commit 536ef7996e
4 changed files with 27 additions and 38 deletions

View File

@@ -247,7 +247,7 @@ foreach (var file in multifileCollection.Files)
}
await e.Context.Response
.SetStatus()
.SetStatusWithSuccess()
.FromText("Ok")
.AnswerAsync();
```
@@ -355,7 +355,7 @@ public class MyHttpPlug2 : PluginBase, IHttpPlugin
var autoGzip = true;//自动判断是否应用gzip压缩。
await response
.SetStatus()//必须要有状态
.SetStatusWithSuccess()//必须要有状态
.FromFileAsync(fileInfo, e.Context.Request, fileName, maxSpeed, bufferLength, autoGzip);
//或者直接使用HttpContext
@@ -445,7 +445,7 @@ public class MyHttpPlug3 : PluginBase, IHttpPlugin
//回应html
await response
.SetStatus()//必须要有状态
.SetStatusWithSuccess()//必须要有状态
.SetContentTypeByExtension(".html")
.SetContent(sb.ToString())
.AnswerAsync();

View File

@@ -377,7 +377,7 @@ using (var client = GetClient())
【方法1】
```csharp {22-49} showLineNumbers
```csharp {22-46} showLineNumbers
//当WebSocket想要使用ReadAsync时需要设置此值为true
client.AllowAsyncRead = true;
@@ -401,6 +401,13 @@ while (true)
{
case WSDataType.Cont:
{
//如果是非net6.0即以上NetFramework平台使用。原因是stream不支持span写入
//var segment = data.AsSegment();
//stream.Write(segment.Array, segment.Offset, segment.Count);
//如果是net6.0以上直接写入span即可
stream.Write(data.Span);
//收到的是中继包
if (dataFrame.FIN)//判断是否为最终包
{
@@ -415,17 +422,6 @@ while (true)
this.m_logger.Info($"WebSocket二进制{stream.Length}长度");
}
}
else
{
//否,继续缓存
//如果是非net6.0即以上NetFramework平台使用。原因是stream不支持span写入
//var segment = data.AsSegment();
//stream.Write(segment.Array, segment.Offset, segment.Count);
//如果是net6.0以上直接写入span即可
stream.Write(data.Span);
}
}
break;
case WSDataType.Text:

View File

@@ -64,8 +64,8 @@ await client.ConnectAsync();
直接发送心跳,可以直接使用扩展方法。
```csharp showLineNumbers
client.Ping();
client.Pong();
await client.PingAsync();
await client.PongAsync();
```
或者自己构建数据帧

View File

@@ -89,7 +89,7 @@ service.Logger.Info("服务器已启动");
/// <param name="client"></param>
/// <param name="context"></param>
/// <returns></returns>
private static bool VerifyConnection(IHttpSessionClient client, HttpContext context)
private static Task<bool> VerifyConnection(IHttpSessionClient client, HttpContext context)
{
if (!context.Request.IsUpgrade())//如果不包含升级协议的header就直接返回false。
{
@@ -107,9 +107,9 @@ private static bool VerifyConnection(IHttpSessionClient client, HttpContext cont
}
else
{
context.Response
await context.Response
.SetStatus(403, "token不正确")
.Answer();
.AnswerAsync();
}
}
else if (context.Request.UrlEquals("/wsheader"))//以此连接则需要从header传入token才可以连接
@@ -120,9 +120,9 @@ private static bool VerifyConnection(IHttpSessionClient client, HttpContext cont
}
else
{
context.Response
await context.Response
.SetStatus(403, "token不正确")
.Answer();
.AnswerAsync();
}
}
return false;
@@ -179,7 +179,8 @@ public class MyApiServer : SingletonRpcServer
{
if (callContext.Caller is HttpSessionClient sessionClient)
{
if (await sessionClient.SwitchProtocolToWebSocketAsync(callContext.HttpContext))
var result=await sessionClient.SwitchProtocolToWebSocketAsync(callContext.HttpContext);
if (result.IsSuccess)
{
m_logger.Info("WS通过WebApi连接");
var webSocket = sessionClient.WebSocket;
@@ -398,7 +399,7 @@ class MyReadWebSocketPlugin : PluginBase, IWebSocketHandshakedPlugin
using (var receiveResult = await client.ReadAsync(CancellationToken.None))
{
if (receiveResult.DataFrame == null)
if (receiveResult.IsCompleted)
{
break;
}
@@ -474,7 +475,7 @@ private static HttpService CreateHttpService()
使用`ReadAsync`,在`OnWebSocketHandshaked`组合消息。
```csharp {33-60} showLineNumbers
```csharp {33-52} showLineNumbers
internal class MyReadTextWebSocketPlugin : PluginBase, IWebSocketHandshakedPlugin
{
private readonly ILog m_logger;
@@ -509,8 +510,11 @@ internal class MyReadTextWebSocketPlugin : PluginBase, IWebSocketHandshakedPlugi
{
case WSDataType.Cont:
{
//收到的是中继包
if (dataFrame.FIN)//判断是否为最终包
//先缓存中继数据
stream.Write(data.Span);
//然后判断中继包是否为最终包
if (dataFrame.FIN)
{
//是
@@ -523,17 +527,6 @@ internal class MyReadTextWebSocketPlugin : PluginBase, IWebSocketHandshakedPlugi
this.m_logger.Info($"WebSocket二进制{stream.Length}长度");
}
}
else
{
//否,继续缓存
//如果是非net6.0即以上NetFramework平台使用。原因是stream不支持span写入
//var segment = data.AsSegment();
//stream.Write(segment.Array, segment.Offset, segment.Count);
//如果是net6.0以上直接写入span即可
stream.Write(data.Span);
}
}
break;
case WSDataType.Text: