C# 在客户端控制台应用程序中,有没有比ClientWebSocket更好的从websocket服务器接收数据的方法?

C# 在客户端控制台应用程序中,有没有比ClientWebSocket更好的从websocket服务器接收数据的方法?,c#,websocket,C#,Websocket,我正在尝试使用WebSocket从特定URI中获取数据。 据我所知,没有Web API端点,只有一个URI,其中包含来自服务器端的各种形式的JSON数据。 我想知道除了控制台应用程序中的原始websocket连接之外,是否还有更简单的方法从该端点获取数据。 收集的数据将被记录下来,以便以后处理 clientWebSocket = new ClientWebSocket(); await clientWebSocket.ConnectAsync(new Uri(serverSetting.KSim

我正在尝试使用WebSocket从特定URI中获取数据。 据我所知,没有Web API端点,只有一个URI,其中包含来自服务器端的各种形式的JSON数据。 我想知道除了控制台应用程序中的原始websocket连接之外,是否还有更简单的方法从该端点获取数据。 收集的数据将被记录下来,以便以后处理

clientWebSocket = new ClientWebSocket();
await clientWebSocket.ConnectAsync(new Uri(serverSetting.KSimNetAPIServerUrl), stoppingToken);

while (!stoppingToken.IsCancellationRequested)
{
    var buffer = new ArraySegment<byte>(new byte[2048]);
    WebSocketReceiveResult result;
    String json;

    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        do
        {
            result = await clientWebSocket.ReceiveAsync(buffer, stoppingToken);
            ms.Write(buffer.Array, buffer.Offset, result.Count);
        } while (!result.EndOfMessage);

        if (result.MessageType == WebSocketMessageType.Close)
            break;

        ms.Seek(0, System.IO.SeekOrigin.Begin);

        json = Encoding.UTF8.GetString(ms.ToArray());
        _logger.LogInformation("Received: {0}", json);
    }
    // TODO: Processing of the JSON data
}
clientWebSocket=newclientwebsocket();
等待clientWebSocket.ConnectAsync(新Uri(serverSetting.KSimNetAPIServerUrl),stoppingToken);
同时(!stoppingToken.IsCancellationRequested)
{
var buffer=newarraysegment(新字节[2048]);
WebSocketReceiveResult结果;
字符串json;
使用(System.IO.MemoryStream ms=new System.IO.MemoryStream())
{
做
{
结果=wait clientWebSocket.ReceiveAsync(缓冲区,stoppingToken);
ms.Write(buffer.Array、buffer.Offset、result.Count);
}而(!result.EndOfMessage);
if(result.MessageType==WebSocketMessageType.Close)
打破
ms.Seek(0,System.IO.SeekOrigin.Begin);
json=Encoding.UTF8.GetString(ms.ToArray());
_logger.LogInformation(“接收:{0}”,json);
}
//TODO:JSON数据的处理
}

所谓“更简单”是指“更高级别”吗?“更少的代码行?”我觉得这很简单;至少你没有和IP地址和路由表争吵。是的,可能是更高层次的,如果有的话。嗯。您可以在自己的类中包装此代码。