Прием запроса WAI Websocket только в том случае, если пользователь вошел в систему
Я использую пакет wai-websockets (версия 3.0.1.1), и я хотел бы открыть сокет, только если пользователь уже вошел в систему. У меня есть промежуточное программное обеспечение, которое заботится обо всех проблемах аутентификации, и если пользователь залогинен в местах User
записать в Vault
запроса WAI.
Есть ли какой-нибудь способ доступа к WAI? Request
от ServerApp
или в качестве альтернативы для проверки Request
до того, как он начинается и передать User
значение в?
1 ответ
Следующая базовая структура позволит вам проанализировать Request
перед передачей управления на веб-сокеты, и позволяют вам передать Request
ценность в ваш ServerApp
при желании:
#!/usr/bin/env stack
-- stack --resolver lts-9.3 script
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Network.Wai.Handler.WebSockets
import Network.HTTP.Types
import Network.WebSockets.Connection
main :: IO ()
main = run 3000 $ \req send ->
case websocketsApp defaultConnectionOptions _serverApp req of
Nothing -> send $ responseLBS status200 [] "Websockets not supported"
Just res -> send res