wai-websockets 1.0.0 → 1.1.0
raw patch · 2 files changed
+12/−11 lines, 2 filesdep ~conduitdep ~waidep ~warp
Dependency ranges changed: conduit, wai, warp
Files
Network/Wai/Handler/WebSockets.hs view
@@ -7,19 +7,19 @@ import Control.Monad.IO.Class (liftIO) import Data.ByteString (ByteString) import Data.Char (toLower)-import Network.Socket (Socket) import Network.Wai (Request, requestHeaders, rawPathInfo, requestHeaders) import qualified Data.ByteString.Char8 as S import qualified Data.Conduit as C import qualified Data.Enumerator as E+import qualified Data.Enumerator.List as EL import qualified Network.WebSockets as WS-import qualified Network.WebSockets.Internal as WS+import Network.Wai.Handler.Warp (Connection (..)) -- | For use with 'settingsIntercept' from the Warp web server. intercept :: WS.Protocol p => (WS.Request -> WS.WebSockets p ()) -> Request- -> Maybe (C.BufferedSource IO ByteString -> Socket -> C.ResourceT IO ())+ -> Maybe (C.BufferedSource IO ByteString -> Connection -> C.ResourceT IO ()) intercept = interceptWith WS.defaultWebSocketsOptions -- | Variation of 'intercept' which allows custom options.@@ -27,7 +27,7 @@ => WS.WebSocketsOptions -> (WS.Request -> WS.WebSockets p ()) -> Request- -> Maybe (C.BufferedSource IO ByteString -> Socket -> C.ResourceT IO ())+ -> Maybe (C.BufferedSource IO ByteString -> Connection -> C.ResourceT IO ()) interceptWith opts app req = case lookup "upgrade" $ requestHeaders req of Just s | S.map toLower s == "websocket" -> Just $ runWebSockets opts req' app@@ -42,15 +42,15 @@ -> WS.RequestHttpPart -> (WS.Request -> WS.WebSockets p ()) -> C.BufferedSource IO ByteString- -> Socket+ -> Connection -> C.ResourceT IO ()-runWebSockets opts req app source sock = do+runWebSockets opts req app source conn = do step <- liftIO $ E.runIteratee $ WS.runWebSocketsWith opts req app send source C.$$ C.sinkState (E.returnI step) push close where- send = WS.iterSocket sock+ send = EL.mapM_ (connSendAll conn) close = const $ return () push iter bs = do step <- liftIO $ E.runIteratee $ E.enumList 1 [bs] E.$$ iter- return (E.returnI step, C.Processing)+ return $ C.StateProcessing $ E.returnI step
wai-websockets.cabal view
@@ -1,5 +1,5 @@ Name: wai-websockets-Version: 1.0.0+Version: 1.1.0 Synopsis: Provide a bridge betweeen WAI and the websockets package. License: BSD3 License-file: LICENSE@@ -19,8 +19,9 @@ Library Build-Depends: base >= 3 && < 5 , bytestring >= 0.9.1.4 && < 0.10- , conduit- , wai >= 1.0 && < 1.1+ , conduit >= 0.2+ , wai >= 1.1 && < 1.2+ , warp >= 1.1 && < 1.2 , enumerator >= 0.4.8 && < 0.5 , network-enumerator >= 0.1.2 && < 0.2 , blaze-builder >= 0.2.1.4 && < 0.4