Прием запроса 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
Другие вопросы по тегам