Warning: Reason support is experimental. We are looking for beta-tester and contributors.

Module Eliom_bus

module Eliom_bus : sig..end

Broadcasting facilities between clients and server.

See the Eliom manual for a detailed introduction to the concept of client server communication.


type ('a, 'b) t
val stream : ('a, 'b) t -> 'b Lwt_stream.t

stream b returns the stream of data sent to bus b. A new stream is created each time this function is called. Some messages from the bus can be lost if they were sent before the call to stream. If you need to receive every message, use original stream instead.

val original_stream : ('a, 'b) t -> 'b Lwt_stream.t

stream b returns the stream of data sent to bus b. A new stream is created each time this function is called. Every messages sent to the bus after the generation of the page are received. This function can be called only in the onload event handler, if called outside, it will raise a Failure.

val write : ('a, 'b) t -> 'a -> unit Lwt.t

write b v send v to the bus b. Every participant of the bus will receive v, including the sender.

val close : ('a, 'b) t -> unit

after close b, stream b stops receiving new messages from the bus, but it is still possible to write to the bus. It is also possible to close the bus by canceling a thread reading on the stream.

val set_queue_size : ('a, 'b) t -> int -> unit

To reduce traffic from the client busses try to send messages by group. set_queue_size bus size set the maximum number of messages that are accumulated before forcing a flush. default is 20

val set_time_before_flush : ('a, 'b) t -> float -> unit

set_time_before_flush bus time set the maximum time to wait for a new message to enqueue before flushing. Set this to a small value to make your app more responsive, but remember that it will consume more bandwidth. default is 0.05 second.