/// <summary> /// Starts listening the socket /// </summary> /// <returns>The task that listens to the <see cref="WebSocket"/></returns> private void GetResponse() { var buffer = new byte[2048]; while (true) { if (_closed) { return; } var endOfMessage = false; var response = string.Empty; while (!endOfMessage) { var socketTask = WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); Task.WhenAny(_connectionCloseTask.Task, socketTask).GetAwaiter(); if (_closed) { return; } var result = socketTask.Result; switch (result.MessageType) { case WebSocketMessageType.Text: response += Encoding.UTF8.GetString(buffer, 0, result.Count); break; case WebSocketMessageType.Close: Close(); return; } endOfMessage = result.EndOfMessage; } if (string.IsNullOrEmpty(response)) { continue; } //System.IO.File.AppendAllText("d:\\tracekees.txt", response + Environment.NewLine); CheckForError(response); var messageBase = MessageBase.FromJson(response); if (_messageId == messageBase.Id) { _response.SetResult(response); } MessageReceived?.Invoke(this, response); } }
private void Websocket_OnMessage(object sender, MessageEventArgs e) { var response = e.Data; CheckForError(response); var messageBase = MessageBase.FromJson(response); if (_messageId == messageBase.Id) { _response.SetResult(response); } MessageReceived?.Invoke(this, response); }