yesod-websockets-0.2.6: WebSockets support for Yesod

Safe HaskellNone
LanguageHaskell98

Yesod.WebSockets

Contents

Synopsis

Core API

type WebSocketsT = ReaderT Connection Source #

A transformer for a WebSockets handler.

Since 0.1.0

webSockets :: (MonadBaseControl IO m, MonadHandler m) => WebSocketsT m () -> m () Source #

Attempt to run a WebSockets handler. This function first checks if the client initiated a WebSockets connection and, if so, runs the provided application, short-circuiting the rest of your handler. If the client did not request a WebSockets connection, the rest of your handler will be called instead.

Since 0.1.0

webSocketsWith Source #

Arguments

:: (MonadBaseControl IO m, MonadHandler m) 
=> (RequestHead -> m (Maybe AcceptRequest))

A Nothing indicates that the websocket upgrade request should not happen and instead the rest of the handler will be called instead. This allows you to use getRequestSubprotocols and only accept the request if a compatible subprotocol is given. Also, the action runs before upgrading the request to websockets, so you can also use short-circuiting handler actions such as invalidArgs.

-> WebSocketsT m () 
-> m () 

Varient of webSockets which allows you to specify the AcceptRequest setttings when upgrading to a websocket connection.

Since 0.2.4

webSocketsOptions :: (MonadBaseControl IO m, MonadHandler m) => ConnectionOptions -> WebSocketsT m () -> m () Source #

Varient of webSockets which allows you to specify the WS.ConnectionOptions setttings when upgrading to a websocket connection.

Since 0.2.5

webSocketsOptionsWith Source #

Arguments

:: (MonadBaseControl IO m, MonadHandler m) 
=> ConnectionOptions

Custom websockets options

-> (RequestHead -> m (Maybe AcceptRequest))

A Nothing indicates that the websocket upgrade request should not happen and instead the rest of the handler will be called instead. This allows you to use getRequestSubprotocols and only accept the request if a compatible subprotocol is given. Also, the action runs before upgrading the request to websockets, so you can also use short-circuiting handler actions such as invalidArgs.

-> WebSocketsT m () 
-> m () 

Varient of webSockets which allows you to specify both the WS.ConnectionOptions and the AcceptRequest setttings when upgrading to a websocket connection.

Since 0.2.5

receiveData :: (MonadIO m, WebSocketsData a) => WebSocketsT m a Source #

Receive a piece of data from the client.

Since 0.1.0

receiveDataE :: (MonadIO m, WebSocketsData a) => WebSocketsT m (Either SomeException a) Source #

Receive a piece of data from the client. Capture SomeException as the result or operation Since 0.2.2

receiveDataMessageE :: MonadIO m => WebSocketsT m (Either SomeException DataMessage) Source #

Receive an application message. Capture SomeException as the result or operation Since 0.2.3

sendPing :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m () Source #

Send a ping message to the client.

Since 0.2.2

sendPingE :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m (Either SomeException ()) Source #

Send a ping message to the client. Capture SomeException as the result of operation Since 0.2.2

sendClose :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m () Source #

Send a close request to the client.

Since 0.2.2

sendCloseE :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m (Either SomeException ()) Source #

Send a close request to the client. Capture SomeException as the result of operation Since 0.2.2

sendTextData :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m () Source #

Send a textual message to the client.

Since 0.1.0

sendTextDataE :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m (Either SomeException ()) Source #

Send a textual message to the client. Capture SomeException as the result or operation and can be used like `either handle_exception return =<< sendTextDataE (Welcome :: Text)` Since 0.2.2

sendBinaryData :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m () Source #

Send a binary message to the client.

Since 0.1.0

sendBinaryDataE :: (MonadIO m, WebSocketsData a) => a -> WebSocketsT m (Either SomeException ()) Source #

Send a binary message to the client. Capture SomeException as the result of operation Since 0.2.2

sendDataMessageE :: MonadIO m => DataMessage -> WebSocketsT m (Either SomeException ()) Source #

Send a DataMessage to the client. Capture SomeException as the result of operation Since 0.2.3

Conduit API

sourceWS :: (MonadIO m, WebSocketsData a) => Producer (WebSocketsT m) a Source #

A Source of WebSockets data from the user.

Since 0.1.0

sinkWSText :: (MonadIO m, WebSocketsData a) => Consumer a (WebSocketsT m) () Source #

A Sink for sending textual data to the user.

Since 0.1.0

sinkWSBinary :: (MonadIO m, WebSocketsData a) => Consumer a (WebSocketsT m) () Source #

A Sink for sending binary data to the user.

Since 0.1.0

Async helpers

race :: MonadBaseControl IO m => m a -> m b -> m (Either a b) Source #

Generalized version of race.

Since 0.1.0

race_ :: MonadBaseControl IO m => m a -> m b -> m () Source #

Generalized version of race_.

Since 0.1.0

concurrently :: MonadBaseControl IO m => m a -> m b -> m (a, b) Source #

Generalized version of concurrently. Note that if your underlying monad has some kind of mutable state, the state from the second action will overwrite the state from the first.

Since 0.1.0

concurrently_ :: MonadBaseControl IO m => m a -> m b -> m () Source #

Run two actions concurrently (like concurrently), but discard their results and any modified monadic state.

Since 0.1.0

Re-exports from websockets

data ConnectionOptions :: * #

Set options for a Connection.

Constructors

ConnectionOptions 

Fields

  • connectionOnPong :: ~(IO ())

    Whenever a pong is received, this IO action is executed. It can be used to tickle connections or fire missiles.