-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathrunweb.ml
30 lines (25 loc) · 1.1 KB
/
runweb.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
module S = Tiny_httpd
let asset_loader path =
match Content.read path with None -> assert false | Some asset -> asset
let () =
let server = S.create ~port:8000 () in
S.add_route_handler ~meth:`GET server S.Route.return (fun _req ->
S.Response.make_string
~headers:[ ("Content-Type", "text/html") ]
(Ok (asset_loader "index.html")) );
S.add_route_handler ~meth:`GET server
S.Route.(exact "life_browser.js" @/ return)
(fun _req ->
S.Response.make_string
~headers:[ ("Content-Type", "application/javascript") ]
(Ok (asset_loader "life_browser.js")) );
S.add_route_handler ~meth:`GET server
S.Route.(exact "life.wasm" @/ return)
(fun _req ->
S.Response.make_string
~headers:[ ("Content-Type", "application/wasm") ]
(Ok (asset_loader "life.wasm")) );
Printf.printf "listening on http://%s:%d\n%!" (S.addr server) (S.port server);
(* "&": if web browser is closed, the command must be executed in background *)
ignore @@ Sys.command "xdg-open http://localhost:8000 &";
ignore (match S.run server with Ok () -> () | Error e -> raise e)