Safe Haskell | None |
---|---|
Language | Haskell98 |
- makeSocket :: String -> Int -> IO Socket
- closeSocket :: Socket -> IO ()
- data PendingConnection = PendingConnection {}
- makePendingConnection :: Socket -> IO PendingConnection
- data AcceptRequest = AcceptRequest {}
- acceptRequest :: PendingConnection -> IO Connection
- acceptRequestWith :: PendingConnection -> AcceptRequest -> IO Connection
- rejectRequest :: PendingConnection -> ByteString -> IO ()
- data Connection = Connection {
- connectionOptions :: ConnectionOptions
- connectionType :: ConnectionType
- connectionProtocol :: Protocol
- connectionIn :: InputStream Message
- connectionOut :: OutputStream Message
- 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 ()
Documentation
makeSocket :: String -> Int -> IO Socket Source
Create a standardized socket. Should only be used for a quick and dirty solution! Should be preceded by the call Network.Socket.withSocketsDo
closeSocket :: Socket -> IO () Source
Closes a socket. This function serves as a quick utility to close a socket and as a reminder that you need to close sockets made by makeSocket.
data PendingConnection Source
A new client connected to the server. We haven't accepted the connection yet, though.
PendingConnection | |
|
makePendingConnection :: Socket -> IO PendingConnection Source
Use data from the socket to create a Pending Connection. This is a blocking function. It tries to first accept a connection before creating a pending connection. Then you are able to choose if you want to accept the connection or not.
data AcceptRequest Source
AcceptRequest | |
|
rejectRequest :: PendingConnection -> ByteString -> IO () Source
data Connection Source
Connection | |
|
receive :: Connection -> IO Message Source
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.
send :: Connection -> Message -> IO () Source
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