При получении сообщения от сокета оно обрезается. Получаю примерно 680,000 символов, хотя должно прийти сообщение примерно в 3 раза больше. Мысли кончились, что я делаю не так?
var webSocketClient = new ClientWebSocket();
var cancellationToken = new CancellationToken();
await webSocketClient.ConnectAsync(new Uri("wss://ws-feed.gdax.com"), cancellationToken).ConfigureAwait(false);
if (webSocketClient.State == WebSocketState.Open)
{
var requestString = JsonConvert.SerializeObject(new
{
type = "subscribe",
product_ids = new[] { "BTC-USD" },
channels = new[] { "level2", "ticker" }
});
var requestBytes = UTF8Encoding.UTF8.GetBytes(requestString);
var subscribeRequest = new ArraySegment<byte>(requestBytes);
var sendCancellationToken = new CancellationToken();
await webSocketClient.SendAsync(subscribeRequest, WebSocketMessageType.Text, true, sendCancellationToken).ConfigureAwait(false);
while (webSocketClient.State == WebSocketState.Open)
{
var receiveCancellationToken = new CancellationToken();
using (var stream = new MemoryStream(1024 * 1000))
{
var receiveBuffer = new ArraySegment<byte>(new byte[128]);
WebSocketReceiveResult webSocketReceiveResult;
do
{
webSocketReceiveResult = await webSocketClient.ReceiveAsync(receiveBuffer, receiveCancellationToken).ConfigureAwait(false);
await stream.WriteAsync(receiveBuffer.Array, receiveBuffer.Offset, receiveBuffer.Count);
} while (!webSocketReceiveResult.EndOfMessage);
var message = stream.ToArray().Where(b => b != 0).ToArray();
string str = Encoding.UTF8.GetString(message, 0, message.Length);
Debug.WriteLine(str);
break;
}
}
}
Докопался до истины: вместо строчки
await stream.WriteAsync(receiveBuffer.Array, receiveBuffer.Offset, receiveBuffer.Count);
надо ставить
await stream.WriteAsync(receiveBuffer.Array, receiveBuffer.Offset, webSocketReceiveResult.Count);
так как иначе вместо чтения сообщения до конца я читаю до конца лишь буфер.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть xls файл с большим количеством строкИспользую C#, библиотеку interop
ЗдравствуйтеВ программе я создаю несколько классов с наследованием
Недавно разобрался в CSS Grid, и понял что это лучшее для меня решение в плане позиционирования элементов
Хотелось бы реализовать такой эффект как на скрине :