相关疑难解决方法(0)

websocket的ReceiveAsync方法不等待整个消息

我通过websocket接收JSON.至少:我是部分的.使用在线websocket服务,我收到完整的JSON响应(忽略所有HTML标记).当我查看我在控制台中收到的JSON时,我可以看到HTML标记(在调试期间使用HTML查看器查看它删除了HTML)但它突然结束(不完整的数据).

我的缓冲区有足够的空间,我正在使用async-await(假设)在继续之前等待整个响应进来.

private async Task Receive()
{
  var buffer = new byte[4096 * 20];

  while (_socket.State == WebSocketState.Open)
  {
      var response = await _socket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);

      if (response.MessageType == WebSocketMessageType.Close)
      {
          await
              _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Close response received",
                  CancellationToken.None);
      }
      else
      {
          var result = Encoding.UTF8.GetString(buffer);
          var a = buffer[1000];
          var b = buffer[10000];
          var c = buffer[50000];
          var d = buffer[81000];
          Console.WriteLine(result);
          var responseObject = JsonConvert.DeserializeObject<Response>(result, _requestParameters.ResponseDataType);

          OnSocketReceive.Invoke(this, new SocketEventArgs {Response = responseObject });
          buffer = new byte[4096 * 20];
      } …
Run Code Online (Sandbox Code Playgroud)

c# websocket async-await

11
推荐指数
4
解决办法
2万
查看次数

标签 统计

async-await ×1

c# ×1

websocket ×1