package jsoo_broadcastchannel

  1. Overview
  2. Docs
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

README.md.html

Jsoo_broadcastchannel

Checkout the documentation

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

OCaml

Innovation. Community. Security.