aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClombrong <clombrong@egregore.fun>2025-05-30 14:37:16 +0200
committerClombrong <cromblong@egregore.fun>2025-05-30 14:37:16 +0200
commit0313c8c3f635752b649b00dcfc21922305b75190 (patch)
tree674564f67a7ab8bf654388e96c3428605f946b82
parentbef93807616077801b10d4bb35106e2e1368a4e1 (diff)
feat!: new module Stream
-rw-r--r--lib/dune4
-rw-r--r--lib/flesh.ml1
-rw-r--r--lib/stream.ml5
-rw-r--r--test/js/dune2
-rw-r--r--test/js/websockets_hello.ml14
5 files changed, 16 insertions, 10 deletions
diff --git a/lib/dune b/lib/dune
index d79e297..957188c 100644
--- a/lib/dune
+++ b/lib/dune
@@ -1,3 +1,5 @@
(library
(public_name flesh)
- (libraries lwt))
+ (libraries
+ lwt
+ portal))
diff --git a/lib/flesh.ml b/lib/flesh.ml
index e69de29..8f4bd77 100644
--- a/lib/flesh.ml
+++ b/lib/flesh.ml
@@ -0,0 +1 @@
+module Stream = Stream
diff --git a/lib/stream.ml b/lib/stream.ml
new file mode 100644
index 0000000..29b6425
--- /dev/null
+++ b/lib/stream.ml
@@ -0,0 +1,5 @@
+open Lwt.Syntax
+
+let start domain : Portal.t Lwt.t =
+ let+ stream, push = Portal.connect domain
+ in stream, push
diff --git a/test/js/dune b/test/js/dune
index b34c980..f6cc084 100644
--- a/test/js/dune
+++ b/test/js/dune
@@ -1,6 +1,6 @@
(test
(name websockets_hello)
- (libraries portal_ws lwt js_of_ocaml)
+ (libraries portal_ws lwt js_of_ocaml flesh)
(modes js)
(preprocess (pps js_of_ocaml-ppx))
(deps node_modules)
diff --git a/test/js/websockets_hello.ml b/test/js/websockets_hello.ml
index 5705dc9..6bc863b 100644
--- a/test/js/websockets_hello.ml
+++ b/test/js/websockets_hello.ml
@@ -1,5 +1,6 @@
open Lwt.Syntax
open Js_of_ocaml
+open Flesh
(* https://stackoverflow.com/questions/34929382/what-are-the-differences-between-lwt-async-and-lwt-main-run-on-ocaml-node-js *)
let rec run t =
@@ -18,11 +19,8 @@ let rec run t =
let () =
run @@
let domain = "egregore.fun" in
- let* stream, push =
- Portal.connect domain in
- push (Some (Portal.stanza_open domain));
- push (Some Portal.stanza_close);
- Lwt_stream.iter
- (fun stanza ->
- print_endline (">>> " ^ stanza))
- stream
+ let* stream, push = Stream.start domain
+ in push (Some (Portal.stanza_open domain));
+ let+ opens = Lwt_stream.get stream
+ in print_endline (Option.get opens);
+ push (Some (Portal.stanza_close))