summaryrefslogtreecommitdiff
path: root/fig-web/src/Fig/Web/Module/Model.hs
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2025-05-26 04:43:38 -0400
committerLLLL Colonq <llll@colonq>2025-05-26 04:45:07 -0400
commit1f2e453d0c9f8412b9032cb4e655713ecdcf1fa3 (patch)
treec2e19550aeec4c092dceefb37a85497a4b90b485 /fig-web/src/Fig/Web/Module/Model.hs
parentb5003a97d3f02b7c8cb5e63468b781d8d849264d (diff)
web: Refactor major style
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
+ )
+ ]