summaryrefslogtreecommitdiff
path: root/fig-web/src/Fig/Web/Module/Model.hs
blob: 86f0128829e4c52a5e06562e12ede7019f83a40b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
    )
  ]