public async Task RunReceiveLoopAsync() { var buffer = new byte[Startup.RECEIVE_BUFFER_SIZE]; while (m_webSocket != null) { string text = ""; try { while (true) { var result = await m_webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); if (result.CloseStatus.HasValue) { CloseSocket(); return; } text += Encoding.UTF8.GetString(buffer, 0, result.Count); if (result.EndOfMessage) { break; } } var message = BaseMessage.FromJson(text); OnMessageReceived(message); } catch (WebSocketException) { CloseSocket(); } catch (Exception ex) { Trace.TraceError("InvalidMessage. Text: " + text); Send(new InvalidMessageReceivedMessage() { Error = ex.Message, TextLength = text.Length }); } } }
public async void RunReceiveLoop() { var buffer = new byte[WebUrls.RECEIVE_BUFFER_SIZE]; while (m_webSocket != null) { string text = ""; try { while (true) { var result = await m_webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); Debug.WriteLine("Received message"); if (result.CloseStatus.HasValue) { CloseSocket(); return; } text += Encoding.UTF8.GetString(buffer, 0, result.Count); if (result.EndOfMessage) { break; } } var message = BaseMessage.FromJson(text); OnMessageReceived?.Invoke(this, message); } catch (WebSocketException ex) { CloseSocket(); return; } catch (Exception ex) { Debug.WriteLine("Receive failed: " + ex.Message); } } }