···
+
(* Echo server that shows request information *)
+
let echo_handler request response =
+
let http_req = Responder.request_of_fastcgi request in
+
let http_resp = Responder.response_of_fastcgi response in
+
http_resp.write_status 200;
+
http_resp.write_header "Content-Type" "text/html";
+
http_resp.write_body "<h1>FastCGI Echo Server</h1>";
+
http_resp.write_body ("<p><strong>Method:</strong> " ^ http_req.method_ ^ "</p>");
+
http_resp.write_body ("<p><strong>URI:</strong> " ^ http_req.uri ^ "</p>");
+
http_resp.write_body ("<p><strong>Query String:</strong> " ^ http_req.query_string ^ "</p>");
+
(match http_req.content_type with
+
| Some ct -> http_resp.write_body ("<p><strong>Content-Type:</strong> " ^ ct ^ "</p>")
+
(match http_req.content_length with
+
| Some cl -> http_resp.write_body ("<p><strong>Content-Length:</strong> " ^ string_of_int cl ^ "</p>")
+
http_resp.write_body "<h2>Headers:</h2><ul>";
+
List.iter (fun (name, value) ->
+
http_resp.write_body ("<li><strong>" ^ name ^ ":</strong> " ^ value ^ "</li>")
+
http_resp.write_body "</ul>";
+
{ app_status = 0; protocol_status = Request_complete }
+
let () = Eio_main.run @@ fun env ->
+
let net = Eio.Stdenv.net env in
+
Eio.Switch.run @@ fun sw ->
+
Server.run_default ~sw ~net
+
~handler:(Handler.Responder echo_handler)
+
~listen_address:(`Tcp ("127.0.0.1", 9001))