c# - 使用 ClientWebSocket 类在 .net core 3.1 中实现 WebSocket 客户端
问题描述
我正在使用ClientWebSocket
Microsoft 提供的库在 C#/.NET Core 3.1 中实现一个简单的客户端。在接收数据时,我正在传递一个延迟 10 秒的取消令牌。如果在此期间我没有收到任何消息,websocket 会进入中止状态,我必须再次连接。
任何人都可以在这方面提供帮助吗?
public async Task Receive()
{
CancellationTokenSource tokenSource = null;
WebSocketReceiveResult result = null;
while(true)
{
try
{
if (webSocket.State == WebSocketState.Open)
{
tokenSource = new CancellationTokenSource(10000);
var buffer = new ArraySegment<byte>(new Byte[8192]);
using(var stream = new MemoryStream())
{
do
{
result = await webSocket.ReceiveAsync(buffer, _cancellationTokenSource.Token);
stream.Write(buffer.Array, buffer.Offset, result.Count);
} while(!result.EndOfMessage);
}
}
else
{
//Need to Handle this scenario
}
}
catch (OpearationCancelledException ex)
{
//Handle Exception
}
}
}
解决方案
推荐阅读
- mysql - JPA - 使用 LocalDate 或 LocalDateTime 按日期获取
- coldfusion - 如何在结构上获得循环的最后一个匹配项
- python - 在 Keras 数据生成器和 flow_from_directory() 方法中裁剪图像
- android - Android 应用在 Windows 资源管理器中不可见,警告 ls: /storage/emulated/: Permission denied
- python - 用于验证字典数组的 JSON Schema
- python - 找不到工具链命令
- wordpress - 具有名称记录的 Google 域指向 Google 名称服务器,但 wordpress GCP vm 安装不会解析到域
- vaadin - vaadin 标签上漂亮的 html 格式字符串
- .net - Ajax 返回一个视图,但它没有使用 mvc4 显示
- java - 一些 cookie 滥用了推荐的“sameSite”属性