yesod-eventsource-1.0.0.1: Server-sent events support for Yesod apps.

Safe HaskellSafe-Infered

Yesod.EventSource

Description

This module contains everything that you need to support server-sent events in Yesod applications.

Synopsis

Documentation

data RepEventSource Source

Data type representing a response of server-sent events (e.g., see repEventSource and ioToRepEventSource).

repEventSource :: (EventSourcePolyfill -> Source (ResourceT IO) ServerEvent) -> GHandler sub master RepEventSourceSource

Returns a Server-Sent Event stream from a Source of ServerEvents. The HTTP socket is flushed after every event. The connection is closed either when the Source finishes outputting data or a CloseEvent is outputted, whichever comes first.

ioToRepEventSource :: s -> (EventSourcePolyfill -> s -> IO ([ServerEvent], s)) -> GHandler sub master RepEventSourceSource

Return a Server-Sent Event stream given an IO action that is repeatedly called. A state is threaded for the action so that it may avoid using IORefs. The IO action may sleep or block while waiting for more data. The HTTP socket is flushed after every list of simultaneous events. The connection is closed as soon as an CloseEvent is outputted, after which no other events are sent to the client.

data EventSourcePolyfill Source

Which EventSource polyfill was detected (if any).

Constructors

NoESPolyfill

We didn't detect any EventSource polyfill that we know.

Remy'sESPolyfill

See https://github.com/remy/polyfills/blob/master/EventSource.js. In order to support Remy's polyfill, your server needs to explicitly close the connection from time to time--browsers such as IE7 will not show any event until the connection is closed.