network-messagepack-rpc-websocket 0.1.1.0 → 0.1.1.1
raw patch · 4 files changed
+35/−31 lines, 4 filesdep ~wss-clientsetup-changednew-uploader
Dependency ranges changed: wss-client
Files
- Setup.hs +0/−2
- network-messagepack-rpc-websocket.cabal +2/−2
- src/Network/MessagePack/RPC/Client/WebSocket.hs +11/−10
- test/Network/MessagePack/RPC/Client/WebSocketSpec.hs +22/−17
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
network-messagepack-rpc-websocket.cabal view
@@ -1,5 +1,5 @@ name: network-messagepack-rpc-websocket-version: 0.1.1.0+version: 0.1.1.1 synopsis: WebSocket backend for MessagePack RPC description: WebSocket backend for "network-messagepack-rpc" homepage: https://github.com/iij-ii/direct-hs/tree/master/network-messagepack-rpc-websocket@@ -39,7 +39,7 @@ , network-messagepack-rpc-websocket , skews , text- , wss-client+ , wss-client >= 0.3 ghc-options: -threaded -rtsopts -with-rtsopts=-N default-language: Haskell2010
src/Network/MessagePack/RPC/Client/WebSocket.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PackageImports #-} -- | MessagePack RPC Client based on WebSocket. module Network.MessagePack.RPC.Client.WebSocket@@ -24,11 +25,11 @@ ) where -import qualified Data.Text as T-import qualified Network.WebSockets.Client as Ws+import qualified Data.Text as T+import qualified "wss-client" Network.WebSockets.Client as Ws -import Network.MessagePack.RPC.Client hiding (withClient)-import qualified Network.MessagePack.RPC.Client as RPC (withClient)+import Network.MessagePack.RPC.Client hiding (withClient)+import qualified Network.MessagePack.RPC.Client as RPC (withClient) -- | URL for websocket end points. type URL = String@@ -39,9 +40,9 @@ -> Config -- ^ Configuration -> (Client -> IO a) -- ^ Action -> IO a-withClient url config action = Ws.withConnection url $ \conn -> do- Ws.forkPingThread conn 30- let backend = Backend (Ws.sendBinaryData conn)- (Ws.receiveData conn)- (Ws.sendClose conn ("Bye!" :: T.Text))- RPC.withClient config backend action+withClient url config action = Ws.withConnection url $ \conn ->+ Ws.withPingThread conn 30 (return ()) $ do+ let backend = Backend (Ws.sendBinaryData conn)+ (Ws.receiveData conn)+ (Ws.sendClose conn ("Bye!" :: T.Text))+ RPC.withClient config backend action
test/Network/MessagePack/RPC/Client/WebSocketSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module Network.MessagePack.RPC.Client.WebSocketSpec@@ -5,22 +6,22 @@ , spec ) where -import Control.Applicative (empty, (<|>))-import Control.Concurrent (threadDelay)-import Control.Concurrent.Async (async,- forConcurrently,- wait)-import Data.ByteString.Char8 ()-import qualified Data.MessagePack as MsgPack-import qualified Data.Text ()-import qualified Network.WebSockets.Skews as Skews-import System.Envy (FromEnv, decodeEnv,- env, fromEnv)+import Control.Applicative (empty, (<|>))+import Control.Concurrent (threadDelay)+import Control.Concurrent.Async (async,+ forConcurrently,+ wait)+import Data.ByteString.Char8 ()+import qualified Data.MessagePack as MsgPack+import qualified Data.Text ()+import qualified Network.WebSockets.Skews as Skews+import System.Envy (FromEnv, decodeEnv,+ env, fromEnv) import Test.Hspec-import Text.Read (readMaybe)+import Text.Read (readMaybe) -import qualified Data.MessagePack.RPC as Rpc-import qualified Network.MessagePack.RPC.Client.WebSocket as Rpc+import qualified Data.MessagePack.RPC as Rpc+import qualified Network.MessagePack.RPC.Client.WebSocket as Rpc -- `main` is here so that this module can be run from GHCi on its own. It is@@ -32,14 +33,18 @@ newtype PortNumber = PortNumber Int deriving (Eq, Show) instance FromEnv PortNumber where- fromEnv = do- mpn <- (readMaybe <$> env "WSS_CLIENT_TEST_SERVER_PORT") <|> pure (Just 8614)+#if MIN_VERSION_envy(2, 0, 0)+ fromEnv _ = do+#else+ fromEnv = do+#endif+ mpn <- (readMaybe <$> env "MESSAGE_PACK_RPC_TEST_SERVER_PORT") <|> pure (Just 8615) PortNumber <$> maybe empty pure mpn spec :: Spec spec = describe "call" $ do- Right (PortNumber pn) <- runIO decodeEnv+ PortNumber pn <- runIO $ either fail return =<< decodeEnv let host = "localhost" server <- runIO $ Skews.start $ Skews.Args host pn