---
name: "Eliom_bus.server"
section: "3o"
platform: "linux"
package: "libeliom-ocaml-doc"
version: "4.0.0-2"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/Eliom_bus.server"
---

# Eliom\_bus.server(3o)

Broadcasting facilities between clients and server

## NAME

Eliom\_bus - Broadcasting facilities between clients and server

## Module

Module   Eliom\_bus

## Documentation

Module **Eliom\_bus**\
  :  **sig end**

Broadcasting facilities between clients and server

**=== Please read the** **{% \<\<a\_manual chapter="clientserver-communication" \| chapter on** **communication \>\> %} of Eliom's manual** **before this page to learn how client and server parts communicate. ===**

*type* **('a, 'b)** *t*

The type of bus's carrying values of type  **'a** . Bus's are values that can be easily shared among clients. Each of these clients along with the server can send a value on the bus. Values can be received by each of the participants as a stream. Note that no effort is put to order message receptions on the different participants.

*val create* :  **?scope:\[\< Eliom\_comet.Channel.comet\_scope \] -\>** **?name:string -\> ?size:int -\> 'a Deriving\_Json.t -\> ('a, 'a) t**

**create ?scope ?name ?size ?filter t** creates a fresh bus. The  **scope** parameter is used to chose the kind of channel on which the bus rely (See  **Eliom\_comet.create** for more information). The  **?name** argument allow one to make bus's persistent over server restart. The  **size** argument behaves like the one on  **Eliom\_comet.Channel.create** . If  **?filter** argument is present, data is filtered through this function before entering the bus. Use this for example if you want to add some information, like IP address, or user id.

*val create\_filtered* :  **?scope:\[\< Eliom\_comet.Channel.comet\_scope \] -\>** **?name:string -\>** **?size:int -\>** **filter:('a -\> 'b Lwt.t) -\> 'a Deriving\_Json.t -\> ('a, 'b) t**

Same as  **create** , but data is filtered through  **filter** function before entering the bus. Use this for example if you want to add some information, like IP address, or user id.

*val stream* :  **('a, 'b) t -\> 'b Lwt\_stream.t**

**stream b** returns the stream of data sent to bus  **b** . Notice you sould not use that function multiple times on the same bus, it will return the same stream. If you want to receive multiple times the same data, you sould copy the stream with  **Lwt\_stream.clone**

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

**write b x** sends the value  **x** on the bus  **b** . Every participant, including the server, will receive  **x** .
