summaryrefslogtreecommitdiff
path: root/fig-web/src/Fig/Web/Utils.hs
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2025-04-21 18:40:42 -0400
committerLLLL Colonq <llll@colonq>2025-04-21 18:40:42 -0400
commitf3fc85678555af675b8b668a3113e3d9ff68f889 (patch)
treea5f9646c5d80d5021ae15b82e462cb257f0a3bc4 /fig-web/src/Fig/Web/Utils.hs
parent510b8cb80519ffc128939aeab68cde7f0c51442c (diff)
Fix websocket handlers
Diffstat (limited to 'fig-web/src/Fig/Web/Utils.hs')
-rw-r--r--fig-web/src/Fig/Web/Utils.hs10
1 files changed, 5 insertions, 5 deletions
diff --git a/fig-web/src/Fig/Web/Utils.hs b/fig-web/src/Fig/Web/Utils.hs
index 9076bd0..48f2e24 100644
--- a/fig-web/src/Fig/Web/Utils.hs
+++ b/fig-web/src/Fig/Web/Utils.hs
@@ -53,9 +53,9 @@ loadConfig path = Toml.decodeFileEither configCodec path >>= \case
Left err -> throwM . FigWebException $ tshow err
Right config -> pure config
-websocket :: ByteString -> (WS.Connection -> IO ()) -> Sc.ScottyM ()
-websocket pat h = Sc.middleware $ Wai.WS.websocketsOr WS.defaultConnectionOptions handler
+websocket :: [(ByteString, WS.Connection -> IO ())] -> Sc.ScottyM ()
+websocket hs = Sc.middleware $ Wai.WS.websocketsOr WS.defaultConnectionOptions handler
where
- handler pending = if WS.requestPath (WS.pendingRequest pending) == pat
- then WS.acceptRequest pending >>= \c -> WS.withPingThread c 30 (pure ()) $ h c
- else WS.rejectRequest pending ""
+ handler pending = case lookup (WS.requestPath (WS.pendingRequest pending)) hs of
+ Nothing -> WS.rejectRequest pending ""
+ Just h -> WS.acceptRequest pending >>= \c -> WS.withPingThread c 30 (pure ()) $ h c