Skip to content

fxfactorial/ocaml-nodejs

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OCaml on nodejs

These are OCaml bindings to Nodejs. I'm currently rewriting everything from a previous iteration and so things might get outdated quickly.

Included are three levels of abstraction,

  1. Nodejs
  2. Nodejs_high_level
  3. Nodejs_high_level_lwt

they correspond to the findlib packages:

nodejs
nodejs.high_level
nodejs.high_level_lwt 

You will probably be using this library at the 2/3 level.

High level Nodejs API Examples

All can be compiled and run with these steps:

$ ocamlfind ocamlc -g -package nodejs.high_level_lwt -linkpkg code.ml
$ js_of_ocaml --debug-info --no-inline --pretty a.out -o T.js
$ node T.js

Using Lwt:

open Lwt.Infix

let () =
  (Nodejs_high_level_lwt.Fs.read_file (Nodejs_high_level.__filename ())
   >>= fun (err, result) -> result#to_string |> print_endline |> Lwt.return
   >|= fun () -> print_endline "Finished Program and Ordered Async")
  |> Lwt.ignore_result

Plain server:

open Nodejs_high_level

let () =
  let s =
    new Net.server (fun client ->
        client#write "Welcome to the Matrix";
        print_endline "Client connected")
  in

  s#listen 8124 (fun () -> print_endline "Created a server")