aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-05-31 12:28:02 +0200
committerClombrong <cromblong@egregore.fun>2025-05-31 12:28:02 +0200
commit22c7c3ff981483865f904ef67cec3ff61a2a38a7 (patch)
tree13e3517d39c1a249e49d30b8539b65de1e37c201
parent0313c8c3f635752b649b00dcfc21922305b75190 (diff)
feat!(stream): stream handles automatic handshake
-rw-r--r--lib/stream.ml11
-rw-r--r--test/js/websockets_hello.ml8
2 files changed, 13 insertions, 6 deletions
diff --git a/lib/stream.ml b/lib/stream.ml
index 29b6425..5da4aea 100644
--- a/lib/stream.ml
+++ b/lib/stream.ml
@@ -1,5 +1,12 @@
open Lwt.Syntax
let start domain : Portal.t Lwt.t =
- let+ stream, push = Portal.connect domain
- in stream, push
+ let* stream, _push = Portal.connect domain
+ in let push = function
+ | None -> _push (Some Portal.stanza_close);
+ _push None;
+ | anything -> _push anything
+ in Some (Portal.stanza_open domain) |> push;
+ (* TODO: check this is a good stanza *)
+ let+ _ = Lwt_stream.get stream
+ in stream, push
diff --git a/test/js/websockets_hello.ml b/test/js/websockets_hello.ml
index 6bc863b..f2f65b6 100644
--- a/test/js/websockets_hello.ml
+++ b/test/js/websockets_hello.ml
@@ -20,7 +20,7 @@ let () =
run @@
let domain = "egregore.fun" in
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))
+ in let* _stream = Lwt_stream.get stream
+ in push (Some "<iq>wrong</iq>");
+ let+ _recv = Lwt_stream.get stream in
+ push None