Safe Haskell | None |
---|---|
Language | Haskell98 |
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
:: (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.
:: (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 #
:: 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.