| Safe Haskell | None | 
|---|---|
| Language | Haskell98 | 
Network.WebSockets.Connection
Description
This module exposes connection internals and should only be used if you really know what you are doing.
- data PendingConnection = PendingConnection {- pendingOptions :: !ConnectionOptions
- pendingRequest :: !RequestHead
- pendingOnAccept :: !(Connection -> IO ())
- pendingStream :: !Stream
 
- data AcceptRequest = AcceptRequest {- acceptSubprotocol :: !(Maybe ByteString)
 
- acceptRequest :: PendingConnection -> IO Connection
- acceptRequestWith :: PendingConnection -> AcceptRequest -> IO Connection
- rejectRequest :: PendingConnection -> ByteString -> IO ()
- data Connection = Connection {- connectionOptions :: !ConnectionOptions
- connectionType :: !ConnectionType
- connectionProtocol :: !Protocol
- connectionParse :: !(IO (Maybe Message))
- connectionWrite :: !(Message -> IO ())
- connectionSentClose :: !(IORef Bool)
 
- data ConnectionOptions = ConnectionOptions {- connectionOnPong :: !(IO ())
 
- defaultConnectionOptions :: ConnectionOptions
- receive :: Connection -> IO Message
- receiveDataMessage :: Connection -> IO DataMessage
- receiveData :: WebSocketsData a => Connection -> IO a
- send :: Connection -> Message -> IO ()
- sendDataMessage :: Connection -> DataMessage -> IO ()
- sendTextData :: WebSocketsData a => Connection -> a -> IO ()
- sendBinaryData :: WebSocketsData a => Connection -> a -> IO ()
- sendClose :: WebSocketsData a => Connection -> a -> IO ()
- sendCloseCode :: WebSocketsData a => Connection -> Word16 -> a -> IO ()
- sendPing :: WebSocketsData a => Connection -> a -> IO ()
- forkPingThread :: Connection -> Int -> IO ()
Documentation
data PendingConnection Source #
A new client connected to the server. We haven't accepted the connection yet, though.
Constructors
| PendingConnection | |
| Fields 
 | |
data AcceptRequest Source #
Constructors
| AcceptRequest | |
| Fields 
 | |
rejectRequest :: PendingConnection -> ByteString -> IO () Source #
data Connection Source #
Constructors
| Connection | |
| Fields 
 | |
data ConnectionOptions Source #
Set options for a Connection.
Constructors
| ConnectionOptions | |
| Fields 
 | |
receiveDataMessage :: Connection -> IO DataMessage Source #
Receive an application message. Automatically respond to control messages.
When the peer sends a close control message, an exception of type CloseRequest
 is thrown.  The peer can send a close control message either to initiate a
 close or in response to a close message we have sent to the peer.  In either
 case the CloseRequest exception will be thrown.  The RFC specifies that
 the server is responsible for closing the TCP connection, which should happen
 after receiving the CloseRequest exception from this function.
This will throw ConnectionClosed if the TCP connection dies unexpectedly.
receiveData :: WebSocketsData a => Connection -> IO a Source #
Receive a message, converting it to whatever format is needed.
sendDataMessage :: Connection -> DataMessage -> IO () Source #
Send a DataMessage
sendTextData :: WebSocketsData a => Connection -> a -> IO () Source #
Send a message as text
sendBinaryData :: WebSocketsData a => Connection -> a -> IO () Source #
Send a message as binary data
sendClose :: WebSocketsData a => Connection -> a -> IO () Source #
Send a friendly close message.  Note that after sending this message,
 you should still continue calling receiveDataMessage to process any
 in-flight messages.  The peer will eventually respond with a close control
 message of its own which will cause receiveDataMessage to throw the
 CloseRequest exception.  This exception is when you can finally consider
 the connection closed.
sendCloseCode :: WebSocketsData a => Connection -> Word16 -> a -> IO () Source #
Send a friendly close message and close code.  Similar to sendClose,
 you should continue calling receiveDataMessage until you receive a
 CloseRequest exception.
See http://tools.ietf.org/html/rfc6455#section-7.4 for a list of close codes.
sendPing :: WebSocketsData a => Connection -> a -> IO () Source #
Send a ping
forkPingThread :: Connection -> Int -> IO () Source #
Forks a ping thread, sending a ping message every n seconds over the
 connection. The thread dies silently if the connection crashes or is closed.