diff --git a/Network/Wai/Handler/WebSockets.hs b/Network/Wai/Handler/WebSockets.hs
--- a/Network/Wai/Handler/WebSockets.hs
+++ b/Network/Wai/Handler/WebSockets.hs
@@ -7,50 +7,59 @@
 import Control.Monad.IO.Class (liftIO)
 import Data.ByteString (ByteString)
 import Data.Char (toLower)
-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.Wai as Wai
+import qualified Network.Wai.Handler.Warp as Warp
 import qualified Network.WebSockets 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 -> Connection -> C.ResourceT IO ())
+          -> Wai.Request
+          -> Maybe (C.Source (C.ResourceT IO) ByteString -> Warp.Connection -> C.ResourceT IO ())
 intercept = interceptWith WS.defaultWebSocketsOptions
 
 -- | Variation of 'intercept' which allows custom options.
 interceptWith :: WS.Protocol p
               => WS.WebSocketsOptions
               -> (WS.Request -> WS.WebSockets p ())
-              -> Request
-              -> Maybe (C.BufferedSource IO ByteString -> Connection -> C.ResourceT IO ())
-interceptWith opts app req = case lookup "upgrade" $ requestHeaders req of
+              -> Wai.Request
+              -> Maybe (C.Source (C.ResourceT IO) ByteString -> Warp.Connection -> C.ResourceT IO ())
+interceptWith opts app req = case lookup "upgrade" $ Wai.requestHeaders req of
     Just s
         | S.map toLower s == "websocket" -> Just $ runWebSockets opts req' app
         | otherwise                      -> Nothing
     _                                    -> Nothing
   where
-    req' = WS.RequestHttpPart (rawPathInfo req) (requestHeaders req)
+    req' = WS.RequestHttpPart (Wai.rawPathInfo req) (Wai.requestHeaders req)
+        (Wai.isSecure req)
 
 -- | Internal function to run the WebSocket iteratee using the conduit library
 runWebSockets :: WS.Protocol p
               => WS.WebSocketsOptions
               -> WS.RequestHttpPart
               -> (WS.Request -> WS.WebSockets p ())
-              -> C.BufferedSource IO ByteString
-              -> Connection
+              -> C.Source (C.ResourceT IO) ByteString
+              -> Warp.Connection
               -> C.ResourceT IO ()
 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  = EL.mapM_ (connSendAll conn)
-    close = const $ return ()
+    send  = iterConnection conn
 
     push iter bs = do
         step <- liftIO $ E.runIteratee $ E.enumList 1 [bs] E.$$ iter
         return $ C.StateProcessing $ E.returnI step
+    close iter   = do
+        _ <- liftIO $ E.runIteratee $ E.enumEOF E.$$ iter
+        return ()
+
+iterConnection :: Warp.Connection -> E.Iteratee ByteString IO ()
+iterConnection c = E.continue go
+  where
+    go (E.Chunks []) = E.continue go
+    go (E.Chunks cs) = E.tryIO (Warp.connSendMany c cs) >> E.continue go
+    go E.EOF         = E.continue go
diff --git a/wai-websockets.cabal b/wai-websockets.cabal
--- a/wai-websockets.cabal
+++ b/wai-websockets.cabal
@@ -1,5 +1,5 @@
 Name:                wai-websockets
-Version:             1.1.0
+Version:             1.2.0
 Synopsis:            Provide a bridge betweeen WAI and the websockets package.
 License:             BSD3
 License-file:        LICENSE
@@ -17,18 +17,18 @@
 flag example
 
 Library
-  Build-Depends:     base                          >= 3        && < 5
-                   , bytestring                >= 0.9.1.4  && < 0.10
-                   , 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
-                   , case-insensitive              >= 0.2
-                   , network                   >= 2.2.1.5 && < 2.4
-                   , transformers              >= 0.2     && < 0.3
-                   , websockets                    >= 0.5.1    && < 0.6
+  Build-Depends:     base               >= 3        && < 5
+                   , bytestring         >= 0.9.1.4  && < 0.10
+                   , conduit            >= 0.4      && < 0.5
+                   , wai                >= 1.2      && < 1.3
+                   , enumerator         >= 0.4.8    && < 0.5
+                   , network-enumerator >= 0.1.2    && < 0.2
+                   , blaze-builder      >= 0.2.1.4  && < 0.4
+                   , case-insensitive   >= 0.2
+                   , network            >= 2.2.1.5  && < 2.4
+                   , transformers       >= 0.2      && < 0.4
+                   , websockets         >= 0.6      && < 0.7
+                   , warp               >= 1.2      && < 1.3
   Exposed-modules:   Network.Wai.Handler.WebSockets
   ghc-options:       -Wall
 
@@ -37,22 +37,22 @@
     buildable: True
   else
     buildable: False
-  Build-Depends:     base >=3 && < 5,
-                     conduit,
-                     wai-websockets,
-                     websockets,
-                     network-enumerator,
-                     warp,
-                     wai,
-                     wai-app-static,
-                     bytestring,
-                     case-insensitive,
-                     blaze-builder,
-                     enumerator,
-                     transformers,
-                     network,
-                     text,
-                     file-embed
+  Build-Depends:     base               >= 3 && < 5
+                   , conduit
+                   , wai-websockets
+                   , websockets
+                   , network-enumerator
+                   , warp
+                   , wai
+                   , wai-app-static
+                   , bytestring
+                   , case-insensitive
+                   , blaze-builder
+                   , enumerator
+                   , transformers
+                   , network
+                   , text
+                   , file-embed
 
   ghc-options:       -Wall -threaded
   main-is:           server.lhs
