Adaptive.ReactiveTrader.Messaging.WebSocket.ClientWebSocketWrapper.StartListen C# (CSharp) Метод

StartListen() приватный Метод

private StartListen ( ) : void
Результат void
        private async void StartListen()
        {
            var buffer = new byte[ReceiveChunkSize];

            try
            {
                while (_ws.State == WebSocketState.Open)
                {
                    var stringResult = new StringBuilder();

                    WebSocketReceiveResult result;
                    do
                    {
                        result = await _ws.ReceiveAsync(new ArraySegment<byte>(buffer), _cancellationToken);

                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            Log.Warning(
                                "Close websocket message received. Close Status: {closeStatus} Close Description: {closeDescription}",
                                result.CloseStatus?.ToString(), result.CloseStatusDescription);

                            await _ws.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
                            CallOnDisconnected();
                        }
                        else
                        {
                            var str = Encoding.UTF8.GetString(buffer, 0, result.Count);
                            stringResult.Append(str);
                        }

                    } while (!result.EndOfMessage);

                    var message = stringResult.ToString();

                    if (string.IsNullOrWhiteSpace(message))
                    {
                        Log.Warning("Received empty message of type {msgType}", result.MessageType.ToString());
                    }
                    else
                    {
                        CallOnMessage(message);
                    }
                }
            }
            catch (Exception)
            {
                CallOnDisconnected();
            }
            finally
            {
                _ws.Dispose();
            }
        }