diff --git a/handbook/docs/httpservice.mdx b/handbook/docs/httpservice.mdx
index e4ff36223..87ceb4abb 100644
--- a/handbook/docs/httpservice.mdx
+++ b/handbook/docs/httpservice.mdx
@@ -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();
diff --git a/handbook/docs/websocketclient.mdx b/handbook/docs/websocketclient.mdx
index a237931a3..91fa32db9 100644
--- a/handbook/docs/websocketclient.mdx
+++ b/handbook/docs/websocketclient.mdx
@@ -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:
diff --git a/handbook/docs/websocketheartbeat.mdx b/handbook/docs/websocketheartbeat.mdx
index 3d098979c..4c8c09885 100644
--- a/handbook/docs/websocketheartbeat.mdx
+++ b/handbook/docs/websocketheartbeat.mdx
@@ -64,8 +64,8 @@ await client.ConnectAsync();
直接发送心跳,可以直接使用扩展方法。
```csharp showLineNumbers
-client.Ping();
-client.Pong();
+await client.PingAsync();
+await client.PongAsync();
```
或者自己构建数据帧
diff --git a/handbook/docs/websocketservice.mdx b/handbook/docs/websocketservice.mdx
index 1804a0953..1495f84ae 100644
--- a/handbook/docs/websocketservice.mdx
+++ b/handbook/docs/websocketservice.mdx
@@ -89,7 +89,7 @@ service.Logger.Info("服务器已启动");
///
///
///
-private static bool VerifyConnection(IHttpSessionClient client, HttpContext context)
+private static Task 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: