2017-10-10 8 views
0

the wai-websockets package (버전 3.0.1.1)을 사용 중이며 사용자가 이미 로그인 한 경우에만 소켓을 열고 싶습니다. 필요한 미들웨어 조각이 있습니다. 모든 인증 문제 및 사용자가 로그인 한 경우 User 레코드가 WAI 요청의 Vault에 저장됩니다.사용자가 로그인 한 경우에만 WAI Websocket 요청을 수락합니다.

ServerApp에서 WAI Request에 액세스 할 수있는 방법이 있나요, 또는 대안으로 그것을 시작하기 전에 Request를 검사하고있는 User 값을 전달?

답변

0

다음의 기본 구조는 당신이 WebSocket을 제어를 전달하기 전에 Request을 분석 할 수 있도록하고, 원하는 경우 당신은 당신의 ServerAppRequest 값을 전달 할 수 있습니다 :

#!/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