summaryrefslogtreecommitdiff
path: root/fig-web/src/Fig/Web/Module/Model.hs
diff options
context:
space:
mode:
Diffstat (limited to 'fig-web/src/Fig/Web/Module/Model.hs')
-rw-r--r--fig-web/src/Fig/Web/Module/Model.hs26
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
+ )
+ ]