HttpBenchmarkSession.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Net.Sockets;
  3. using System.Text.Json;
  4. using NetCoreServer;
  5. namespace Benchmarks
  6. {
  7. public class HttpBenchmarkSession : HttpSession
  8. {
  9. public HttpBenchmarkSession(HttpServer server) : base(server) { }
  10. protected override void OnReceivedRequest(HttpRequest request)
  11. {
  12. if (request.Url.StartsWith("/plaintext"))
  13. {
  14. SendResponseAsync(MakeResponse("Hello, World!", "text/plain; charset=UTF-8"));
  15. }
  16. else if (request.Url.StartsWith("/json"))
  17. {
  18. var value = new JsonResult() { Message = "Hello, World!" };
  19. var serialized = JsonSerializer.Serialize(value);
  20. SendResponseAsync(MakeResponse(serialized, "application/json; charset=UTF-8"));
  21. }
  22. else
  23. {
  24. SendResponseAsync(Response.MakeErrorResponse("Not found", 404));
  25. }
  26. }
  27. protected override void OnReceivedRequestError(HttpRequest request, string error)
  28. {
  29. Console.WriteLine($"Request error: {error}");
  30. }
  31. protected override void OnError(SocketError error)
  32. {
  33. Console.WriteLine($"HTTP session caught an error: {error}");
  34. }
  35. private static HttpResponse MakeResponse(string value, string contentType)
  36. {
  37. var response = new HttpResponse(200, "OK", "HTTP/1.1");
  38. response.SetHeader("Server", "NetCoreServer");
  39. response.SetHeader("Date", DateTime.UtcNow.ToString("r"));
  40. response.SetHeader("Content-Type", contentType);
  41. response.SetBody(value);
  42. return response;
  43. }
  44. }
  45. }