content: --------------------------------------------------------------------------------
  {-# LANGUAGE ScopedTypeVariables #-}
  module Network.WebSockets
      ( -- * Incoming connections and handshaking
        PendingConnection
      , pendingRequest
      , acceptRequest
      , AcceptRequest(..)
      , defaultAcceptRequest
      , acceptRequestWith
      , rejectRequest
      , RejectRequest(..)
      , defaultRejectRequest
      , rejectRequestWith
  
        -- * Main connection type
      , Connection
  
        -- * Options for connections
      , ConnectionOptions (..)
      , defaultConnectionOptions
  
        -- ** Compression options
      , CompressionOptions (..)
      , PermessageDeflate (..)
      , defaultPermessageDeflate
  
        -- ** Protection limits
      , SizeLimit (..)
  
        -- * Sending and receiving messages
      , receive
      , receiveDataMessage
      , receiveData
      , send
      , sendDataMessage
      , sendDataMessages
      , sendTextData
      , sendTextDatas
      , sendBinaryData
      , sendBinaryDatas
      , sendClose
      , sendCloseCode
      , sendPing
  
        -- * HTTP Types
      , Headers
      , Request (..)
      , RequestHead (..)
      , getRequestSubprotocols
      , Response (..)
      , ResponseHead (..)
  
        -- * WebSocket message types
      , Message (..)
      , ControlMessage (..)
      , DataMessage (..)
      , WebSocketsData (..)
  
        -- * Exceptions
      , HandshakeException (..)
      , ConnectionException (..)
  
        -- * Running a standalone server
      , ServerApp
      , runServer
      , runServerWith
      , ServerOptions (..)
      , defaultServerOptions
      , runServerWithOptions
  
        -- * Utilities for writing your own server
      , makeListenSocket
      , makePendingConnection
      , makePendingConnectionFromStream
  
        -- * Running a client
      , ClientApp
      , runClient
      , runClientWith
      , runClientWithSocket
      , runClientWithStream
      , newClientConnection
  
        -- * Utilities
      , PingPongOptions(..)
      , defaultPingPongOptions
      , withPingPong
      , withPingThread
      , forkPingThread
      ) where
  
  
  --------------------------------------------------------------------------------
  import           Network.WebSockets.Client
  import           Network.WebSockets.Connection
  import           Network.WebSockets.Connection.PingPong
  import           Network.WebSockets.Http
  import           Network.WebSockets.Server
  import           Network.WebSockets.Types
  