首页 > 解决方案 > 使用 ClientWebSocket 类在 .net core 3.1 中实现 WebSocket 客户端

问题描述

我正在使用ClientWebSocketMicrosoft 提供的库在 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
        }
    }
}

标签: c#websocketasp.net-core-3.1

解决方案


推荐阅读