Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
interact :: (CommandHandler cache model message, Data message, Data message2) => Connection -> TChan (Out (Action message)) -> TChan (Out message2) -> cache model -> ClientId -> IO () Source #
The common way how to use websocket Connection
obtained from Handler
via Conduit
.
interact
starts two concurrent processes.
First one is responsible for reading data from stream, decoding JSON message, executing custom business logic implemented by user and pushing the produced outgoing message
to TChan
.
The second process is constantly reading from TChan
, encoding the given message and pushing it to all subscribers.
class Data cmd => CommandHandler cache model cmd where Source #
CommandHandler
class contains all business logic, i.e. how to change the given state ('cache model'), synchronize state for all online sessions and produce outgoing message with the Action
. Action
contains ClientId
to separate different sessions, ExecuteStrategy
to tell the Client
how to handle incoming message.