diff options
author | Clombrong <cromblong@egregore.fun> | 2025-05-31 12:28:02 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-05-31 12:28:02 +0200 |
commit | 22c7c3ff981483865f904ef67cec3ff61a2a38a7 (patch) | |
tree | 13e3517d39c1a249e49d30b8539b65de1e37c201 | |
parent | 0313c8c3f635752b649b00dcfc21922305b75190 (diff) |
feat!(stream): stream handles automatic handshake
-rw-r--r-- | lib/stream.ml | 11 | ||||
-rw-r--r-- | test/js/websockets_hello.ml | 8 |
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 |