diff options
Diffstat (limited to 'fig-web/src/Fig/Web/Module/Model.hs')
| -rw-r--r-- | fig-web/src/Fig/Web/Module/Model.hs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/fig-web/src/Fig/Web/Module/Model.hs b/fig-web/src/Fig/Web/Module/Model.hs new file mode 100644 index 0000000..86f0128 --- /dev/null +++ b/fig-web/src/Fig/Web/Module/Model.hs @@ -0,0 +1,26 @@ +module Fig.Web.Module.Model + ( publicWebsockets + ) where + +import Fig.Prelude + +import qualified Control.Concurrent.Chan as Chan + +import qualified Network.WebSockets as WS + +import Fig.Web.Types + +publicWebsockets :: Websockets +publicWebsockets a = + [ ( "/api/model/broadcast", \conn -> do + forever do + msg <- liftIO $ WS.receiveDataMessage conn + Chan.writeChan a.channels.model msg + ) + , ( "/api/model/events", \conn -> do + c <- Chan.dupChan a.channels.model + forever do + ev <- liftIO $ Chan.readChan c + WS.sendDataMessage conn ev + ) + ] |
