|
22 | 22 | * along with this program; if not, write to the Free Software
|
23 | 23 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
|
24 | 24 |
|
25 |
| -[@@@bs.config{non_export = true; obj_type_auto_uncurry = true}] |
26 |
| - |
27 |
| -let port = 3000 |
28 |
| -let hostname = "127.0.0.1" |
29 |
| -let create_server http = |
30 |
| - let server = http##createServer (fun [@uncurry] (req, resp) -> |
31 |
| - resp##statusCode_set 200; |
32 |
| - resp##setHeader("Content-Type", "text/plain"); |
33 |
| - resp##end_ "Hello world\n" |
34 |
| - ) |
35 |
| - in |
36 |
| - server##listen(port, hostname, fun [@uncurry] () -> |
37 |
| - Js.log ("Server running at http://"^ hostname ^ ":" ^ string_of_int port ^ "/") |
38 |
| - ) |
| 25 | +[@@@bs.config{no_export; bs_class_type}] |
39 | 26 |
|
40 | 27 | type req
|
41 | 28 |
|
42 |
| -type resp = [%bs.obj:< |
43 |
| - statusCode_set : int -> unit ; |
44 |
| - setHeader : string * string -> unit ; |
45 |
| - end_ : string -> unit |
46 |
| -> ] |
| 29 | +class type _resp = object |
| 30 | + method statusCode : int [@@bs.set] |
| 31 | + method setHeader : string -> string -> unit |
| 32 | + method _end : string -> unit |
| 33 | +end |
47 | 34 |
|
48 |
| -type server = [%bs.obj:< |
49 |
| - listen : int * string * (unit -> unit) -> unit |
50 |
| -> ] |
| 35 | +type resp = _resp Js.t |
51 | 36 |
|
| 37 | +class type _server = object |
| 38 | + method listen : int -> string -> (unit -> unit [@bs]) -> unit |
| 39 | +end |
| 40 | +type server = _server Js.t |
52 | 41 |
|
| 42 | +class type _http = object |
| 43 | + method createServer : (req -> resp -> unit [@bs] ) -> server |
| 44 | +end |
53 | 45 |
|
54 |
| -type http = [%bs.obj:< |
55 |
| - createServer : (req * resp -> unit ) -> server |
56 |
| -> ] |
| 46 | +type http = _http Js.t |
57 | 47 |
|
58 | 48 |
|
59 | 49 | external http : http = "http" [@@bs.val_of_module ]
|
60 | 50 |
|
61 | 51 |
|
| 52 | +let port = 3000 |
| 53 | +let hostname = "127.0.0.1" |
| 54 | +let create_server (http : http) = |
| 55 | + let server = http##createServer begin fun [@bs] req resp -> |
| 56 | + resp##statusCode #= 200; |
| 57 | + resp##setHeader "Content-Type" "text/plain"; |
| 58 | + resp##_end "Hello world\n" |
| 59 | + end |
| 60 | + in |
| 61 | + server##listen port hostname begin fun [@bs] () -> |
| 62 | + Js.log ("Server running at http://"^ hostname ^ ":" ^ string_of_int port ^ "/") |
| 63 | + end |
| 64 | + |
| 65 | + |
62 | 66 | let () =
|
63 | 67 | create_server http
|
64 | 68 |
|
|
0 commit comments