Esempio n. 1
0
        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
                    });
                }
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }