StreamType represents the
transport protocol type used to transfer stream of bytes.
StreamType should meet the
AsyncStream
concept.
Additionally, it should follow Asio's layered stream model by having a lowest_layer_type member type, and a lowest_layer member function, returing
a lowest_layer_type&.
The lowest_layer_type should
inherit from boost::asio::ip::tcp::socket.
The types boost::asio::ip::tcp::socket,
boost::asio::ssl::stream<
and boost::asio::ip::tcp::socket>boost::beast::websocket::stream<NextLayer>
meet these requirements.