-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simpler interface to the websockets api -- -- Simpler interface to the websockets api @package websockets-simple @version 0.0.5 module Network.WebSockets.Simple data WebSocketsAppParams send m WebSocketsAppParams :: (send -> m ()) -> m () -> WebSocketsAppParams send m [send] :: WebSocketsAppParams send m -> send -> m () [close] :: WebSocketsAppParams send m -> m () data WebSocketsApp send receive m WebSocketsApp :: (WebSocketsAppParams send m -> m ()) -> (WebSocketsAppParams send m -> receive -> m ()) -> (Maybe (Word16, ByteString) -> m ()) -> WebSocketsApp send receive m [onOpen] :: WebSocketsApp send receive m -> WebSocketsAppParams send m -> m () [onReceive] :: WebSocketsApp send receive m -> WebSocketsAppParams send m -> receive -> m () -- | Either was a clean close, with CloseRequest params, or was -- unclean. Note that to implement backoff strategies, you should catch -- your ConnectionException outside this simple app, and -- only after you've runClient or server, because the -- Connection will be different. [onClose] :: WebSocketsApp send receive m -> Maybe (Word16, ByteString) -> m () hoistWebSocketsApp :: (forall a. m a -> n a) -> (forall a. n a -> m a) -> WebSocketsApp send receive m -> WebSocketsApp send receive n -- | This can throw a WebSocketSimpleError when json parsing fails. -- However, do note: the onOpen is called once, but is still -- forked when called. Likewise, the onReceive function is called -- every time a (parsable) response is received from the other -- party, and is forked on every invocation. toClientAppT :: (ToJSON send, FromJSON receive, MonadBaseControl IO m, MonadThrow m, MonadCatch m) => WebSocketsApp send receive m -> ClientAppT m (Maybe WebSocketsAppThreads) toClientAppT' :: (ToJSON send, FromJSON receive, MonadBaseControl IO m, MonadThrow m, MonadCatch m) => WebSocketsApp send receive m -> ClientAppT m () toServerAppT :: (ToJSON send, FromJSON receive, MonadBaseControl IO m, MonadThrow m, MonadCatch m) => WebSocketsApp send receive m -> ServerAppT m -- | A simple backoff strategy, which (per second), will increasingly delay -- at 2^soFar, until soFar >= 5minutes, where it -- will then routinely poll every 5 minutes. expBackoffStrategy :: (MonadBaseControl IO m, MonadCatch m) => m a -> m a data WebSocketSimpleError JSONParseError :: ByteString -> WebSocketSimpleError data WebSocketsAppThreads WebSocketsAppThreads :: Async () -> TChan (Async ()) -> WebSocketsAppThreads [onOpenThread] :: WebSocketsAppThreads -> Async () [onReceiveThreads] :: WebSocketsAppThreads -> TChan (Async ()) instance GHC.Generics.Constructor Network.WebSockets.Simple.C1_0WebSocketSimpleError instance GHC.Generics.Datatype Network.WebSockets.Simple.D1WebSocketSimpleError instance GHC.Generics.Selector Network.WebSockets.Simple.S1_0_2WebSocketsApp instance GHC.Generics.Selector Network.WebSockets.Simple.S1_0_1WebSocketsApp instance GHC.Generics.Selector Network.WebSockets.Simple.S1_0_0WebSocketsApp instance GHC.Generics.Constructor Network.WebSockets.Simple.C1_0WebSocketsApp instance GHC.Generics.Datatype Network.WebSockets.Simple.D1WebSocketsApp instance GHC.Generics.Selector Network.WebSockets.Simple.S1_0_1WebSocketsAppParams instance GHC.Generics.Selector Network.WebSockets.Simple.S1_0_0WebSocketsAppParams instance GHC.Generics.Constructor Network.WebSockets.Simple.C1_0WebSocketsAppParams instance GHC.Generics.Datatype Network.WebSockets.Simple.D1WebSocketsAppParams instance GHC.Show.Show Network.WebSockets.Simple.WebSocketSimpleError instance GHC.Classes.Eq Network.WebSockets.Simple.WebSocketSimpleError instance GHC.Generics.Generic Network.WebSockets.Simple.WebSocketSimpleError instance GHC.Generics.Generic (Network.WebSockets.Simple.WebSocketsApp send receive m) instance GHC.Generics.Generic (Network.WebSockets.Simple.WebSocketsAppParams send m) instance GHC.Exception.Exception Network.WebSockets.Simple.WebSocketSimpleError module Network.WebSockets.Simple.PingPong newtype PingPong a PingPong :: Maybe a -> PingPong a [getPingPong] :: PingPong a -> Maybe a -- | Assumes a isn't an Array of anything -- | Assumes a isn't an Array of anything pingPong :: (MonadBaseControl IO m) => Int -> WebSocketsApp send receive m -> m (WebSocketsApp (PingPong send) (PingPong receive) m) instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Network.WebSockets.Simple.PingPong.PingPong a) instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Network.WebSockets.Simple.PingPong.PingPong a)