| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
PostgRESTWS.HasqlBroadcast
Description
This module provides a function to produce a Multiplexer from a Hasql Connection.
The producer issues a LISTEN command upon Open commands and UNLISTEN upon Close.
Documentation
newHasqlBroadcaster :: Connection -> IO Multiplexer Source #
Returns a multiplexer from a connection, listen for different database notification channels using that connection.
This function also spawns a thread that keeps relaying the messages from the database to the multiplexer's listeners
To listen on channels *chat*
import Protolude
import PostgRESTWS.HasqlBroadcast
import PostgRESTWS.Broadcast
import Hasql.Connection
main = do
conOrError <- H.acquire "postgres:/localhosttest_database"
let con = either (panic . show) id conOrError :: Connection
multi <- newHasqlBroadcaster con
onMessage multi "chat" (ch ->
forever $ fmap print (atomically $ readTChan ch)
newHasqlBroadcasterOrError :: ByteString -> IO (Either ByteString Multiplexer) Source #
Returns a multiplexer from a connection URI or an error message on the left case This function also spawns a thread that keeps relaying the messages from the database to the multiplexer's listeners
acquire :: Settings -> IO (Either ConnectionError Connection) #
Acquire a connection using the provided settings encoded according to the PostgreSQL format.
relayMessages :: Multiplexer -> IO () Source #
Reads the messages from the producer and relays them to the active listeners in their respective channels.
relayMessagesForever :: Multiplexer -> IO ThreadId Source #
Opens a thread that relays messages from the producer thread to the channels forever