package jsoo_broadcastchannel
A wrapper in Js_of_ocaml to deal with BroadcastChannel
Install
Dune Dependency
Authors
Maintainers
Sources
2.0.0.tar.gz
sha256=8e0b102c23d6c5777a2c746af05c91d7d6a151725aa84c3b1e77335923a4c501
md5=e24e6b6aafc3a15a0df5cd0c4bdafb4c
Description
The BroadcastChannel interface represents a named channel that any browsing context of a given origin can subscribe to. It allows communication between different documents (in different windows, tabs, frames or iframes) of the same origin. Messages are broadcasted via a message event fired at all BroadcastChannel objects listening to the channel.
Published: 13 Feb 2020
README
Jsoo_broadcastchannel
Jsoo_broadcastchannel is a binding for the BroadcastChannel Api.
Example of use
Creating a channel an post message (on a first file) :
let channel = Broadcast_channel.create "my_first_channel"
let _ = Broadcast_channel.post channel (Js.string "Hello World")
Receiving message from the channel my_first_channel
on another file with onmessage
(* Retreive the channel *)
let channel : Js.string Js.t Broadcast_channel.t =
Broadcast_channel.create "my_first_channel"
(* You have to fix the type of the channel, you can also use [Broadcast_channel.create_with] *)
let _ =
Broadcast_channel.on
channel
(fun ev ->
(* Use the ev object *)
Js._true
)
Receiving message from the channel my_first_channel
on an another file with addEventListener
(* Retreive the channel *)
let channel : Js.string Js.t Broadcast_channel.t =
Broadcast_channel.create "my_first_channel"
(* You have to fix the type of the channel, you can also use [Broadcast_channel.create_with] *)
let _ =
Broadcast_channel.addEventListener
channel
(Broadcast_channel.message channel)
(Dom.handler (fun ev -> ... Js._true))
Js._true
Or you can use Broadcast_channel.create_with
(for a more convenient usage, without type annotation)
(* Retreive the channel *)
let (channel, message_event) =
Broadcast_channel.create_with
"my_first_channel"
(Js.string "a sample")
let _ =
Broadcast_channel.addEventListener
channel
message_event
(Dom.handler (fun ev -> ... Js._true))
Js._true
Receiving message from the channel my_first_channel
on an another file with Lwt_js_events
(* Retreive the channel *)
let channel : Js.string Js.t Broadcast_channel.t =
Broadcast_channel.create "my_first_channel"
let _ =
Lwt_js_events.async_loop
Broadcast_channel.lwt_js_message
channel
(fun ev _ ->
...
Lwt.return_unit
)
Special thanks
I would like to sincerely thank @drup for his advice on the implementation and the design of the API !
Sample
Dependencies (5)
-
dune
>= "1.11"
- lwt
- js_of_ocaml-ppx
-
js_of_ocaml
>= "2.8.4"
-
ocaml
>= "4.02.0"
Dev Dependencies
None
Used by
None
Conflicts
None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page