private async Task ListenAsync()
{
var buffer = new Byte[ReceiveChunkSize];
var stringResult = new StringBuilder();
try
{
while (_ws.State == WebSocketState.Open)
{
var segment = new ArraySegment<Byte>(buffer);
var result = await _ws.ReceiveAsync(segment, _cts.Token).ConfigureAwait(false);
if (result.MessageType == WebSocketMessageType.Close)
{
await CloseAsync().ConfigureAwait(false);
break;
}
stringResult.Append(Encoding.UTF8.GetString(buffer, 0, result.Count));
if (result.EndOfMessage)
{
OnMessage(stringResult.ToString());
stringResult.Clear();
}
}
}
catch (Exception ex)
{
OnError(ex);
CancelListener();
OnDisconnected();
}
}