Module Os_notif.Make_Simple
Use this functor in case messages are to be delivered only to clients connected to the current server, as is always the case in a single-server set-up.
Parameters
module A : ARG_SIMPLESignature
include Eliom_notif.S
with type identity = Os_types.User.id option
with type key = A.key
with type server_notif = A.notification
with type client_notif = A.notification
type identity = Os_types.User.id optionidentity is the type of values used to differentiate one listener from another. Typically it will be a user, but it could also for instance be a chat window.
type key = A.keykey is the type of values designating a given resource.
type server_notif = A.notificationserver notification type; Can be different from client_notif.
type client_notif = A.notificationclient notification type; Can be different from server_notif.
val init : unit -> unit Lwt.tInitialise the notification module for the current client. This function needs to be called before using most other functions of this module. It isn't called implicitly during module instantiation because it relies on identity data which might not be available yet.
val deinit : unit -> unitDeinitialise/deactivate the notification module for the current client.
val listen : key -> unitMake client process listen on data whose index is key
val unlisten : key -> unitStop listening on data key
module Ext : sig ... endval client_ev : unit -> (key * client_notif) Eliom_react.Down.tReturns the client react event.
'a Eliom_react.Down.t = 'a React.E.t on client side.
Map a function on this event to react to notifications from the server. For example:
let%client handle_notification some_stuff ev = ...
let%server something some_stuff = ignore %client (ignore (React.E.map (handle_notification ~%some_stuff) ~%(Notif_module.client_ev ()) ) : unit)
val clean : unit -> unitCall clean () to clear the tables from empty data.
val unlisten_user :
?sitedata:Eliom_common.sitedata ->
userid:Os_types.User.id ->
key ->
unitMake a user stop listening on data key. This function will work as expected without a value supplied for sitedata if called during a request or initialisation. Otherwise a value needs to be supplied.
val notify :
?notfor:[ `Me | `User of Os_types.User.id ] ->
key ->
server_notif ->
unit