| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Network.Simple.WS
Contents
Description
Simple tools for establishing and using insecure WebSockets connections on top of
TCP (i.e, ws://).
See the
network-simple-wss
package for Secure WebSockets (i.e, wss://) support.
Notice that, currently, this is package offers tools that are mostly intreresting from a client's point of view. Server side support will come later.
Synopsis
- data Connection
- send :: MonadIO m => Connection -> ByteString -> m ()
- recv :: MonadIO m => Connection -> m ByteString
- connect :: (MonadIO m, MonadMask m) => HostName -> ServiceName -> ByteString -> [(ByteString, ByteString)] -> ((Connection, SockAddr) -> m r) -> m r
- connectSOCKS5 :: (MonadIO m, MonadMask m) => HostName -> ServiceName -> HostName -> ServiceName -> ByteString -> [(ByteString, ByteString)] -> ((Connection, SockAddr, SockAddr) -> m r) -> m r
- clientConnectionFromStream :: MonadIO m => Stream -> HostName -> ServiceName -> ByteString -> [(ByteString, ByteString)] -> m Connection
- streamFromSocket :: MonadIO m => Socket -> m Stream
Documentation
data Connection #
send :: MonadIO m => Connection -> ByteString -> m () Source #
Send bytes to the remote end.
Takes a lazy ByteString.
recv :: MonadIO m => Connection -> m ByteString Source #
Receive bytes from the remote end.
Returns a strict ByteString.
Returns an empty string when the remote end gracefully closes the connection.
Client side
Arguments
| :: (MonadIO m, MonadMask m) | |
| => HostName | WebSockets server host name (e.g., |
| -> ServiceName | WebSockets server port (e.g., |
| -> ByteString | WebSockets resource (e.g., Leading |
| -> [(ByteString, ByteString)] | Extra HTTP Headers
(e.g., |
| -> ((Connection, SockAddr) -> m r) | Computation to run after establishing a WebSockets to the remote server. Takes the WebSockets connection and remote end address. |
| -> m r |
Connect to the specified WebSockets server.
Arguments
| :: (MonadIO m, MonadMask m) | |
| => HostName | SOCKS5 proxy server hostname or IP address. |
| -> ServiceName | SOCKS5 proxy server service port name or number. |
| -> HostName | Destination WebSocket server hostname or IP address. We connect to this host through the SOCKS5 proxy specified in the previous arguments. Note that if hostname resolution on this |
| -> ServiceName | Destination WebSockets server port (e.g., |
| -> ByteString | WebSockets resource (e.g., Leading |
| -> [(ByteString, ByteString)] | Extra HTTP Headers
(e.g., |
| -> ((Connection, SockAddr, SockAddr) -> m r) | Computation taking a |
| -> m r |
Like connect, but connects to the destination server through a SOCKS5
proxy.
Low level
clientConnectionFromStream Source #
Arguments
| :: MonadIO m | |
| => Stream | Stream on which to establish the WebSockets connection. |
| -> HostName | WebSockets server host name (e.g., |
| -> ServiceName | WebSockets server port (e.g., |
| -> ByteString | WebSockets resource (e.g., Leading |
| -> [(ByteString, ByteString)] | Extra HTTP Headers
(e.g., |
| -> m Connection | Established WebSockets connection |
Obtain a Connection to the specified Uri over the given Stream,
connected to either a WebSockets server, or a Secure WebSockets server.
streamFromSocket :: MonadIO m => Socket -> m Stream Source #
Obtain a Stream implemented using the network Socket. You can
use the
network-simple
library to get one of those.