{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} module Main (main) where import Data.ByteString import Data.Foldable (for_) import Network.HTTP.Client.TLS (newTlsManager) import Network.HTTP.Client.WebSockets as HCWS import Network.URI.Static import qualified Network.WebSockets as WS import Test.Hspec main :: IO () main = hspec $ describe "WebSockets via http-client" $ do it "should connect to an echo server" $ do mgr <- newTlsManager for_ [[uri|ws://echo.websocket.org|], [uri|wss://echo.websocket.org|]] $ \u -> HCWS.runClient mgr u $ \conn -> do let bs = "test" :: ByteString WS.sendTextData conn bs bs' <- WS.receiveData conn bs `shouldBe` bs'