From 70e0ddca4e588479584b1f6f8637d6b448517c2e Mon Sep 17 00:00:00 2001 From: Konstantin Cherenkov Date: Mon, 15 Jan 2018 21:21:03 +0500 Subject: [PATCH] Fix websocket message handling --- src/Api/Clients/RealtimeClient.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Api/Clients/RealtimeClient.cs b/src/Api/Clients/RealtimeClient.cs index 808cfe1..5e72213 100644 --- a/src/Api/Clients/RealtimeClient.cs +++ b/src/Api/Clients/RealtimeClient.cs @@ -61,11 +61,17 @@ public async Task SubscribeAsync(Action messageReceived) do { webSocketReceiveResult = await webSocketClient.ReceiveAsync(receiveBuffer, receiveCancellationToken).ConfigureAwait(false); - await stream.WriteAsync(receiveBuffer.Array, receiveBuffer.Offset, receiveBuffer.Count); + await stream.WriteAsync(receiveBuffer.Array, receiveBuffer.Offset, webSocketReceiveResult.Count); } while(!webSocketReceiveResult.EndOfMessage); - var message = stream.ToArray().Where(b => b != 0).ToArray(); - messageReceived(Encoding.ASCII.GetString(message, 0, message.Length)); + stream.Seek(0, SeekOrigin.Begin); + if (webSocketReceiveResult.MessageType == WebSocketMessageType.Text) + { + using (var reader = new StreamReader(stream, Encoding.UTF8)) + { + messageReceived(reader.ReadToEnd()); + } + } } } } @@ -106,4 +112,4 @@ public RealtimeMessage ParseMessage(byte[] message) return realtimeMessage; } } -} \ No newline at end of file +}