Yep, glad to. Beast is designed to use the established Asio idioms to the greatest extent possible. It lets users adopt the buffer sequence, dynamic buffer, and stream abstractions found in Asio for flexibility. Beast leaves important decisions to the user such as how memory for buffers is allocated or how the connections are established (as client or server). It doesn't impose any particular structure, so you can design your program in the way that is best for your use-case.
Another really cool thing about Beast is that it supports the permessage-deflate extension without requiring linking to ZLib. And yet Beast also remains header-only. You can even turn off permessage-deflate support at compile time using a template parameter constant, so that the resulting compiled code is smaller.
And finally, Beast has a very robust HTTP message model. You get full, high-level control over the WebSocket handshake. And you get powerful algorithms for sending and receiving HTTP messages.
For example, here's an asynchronous HTTP server that supports a WebSocket echo application. This server operates both plain and SSL on the same port using the SSL handshake detector tutorial in the Beast documentation. It also serves files from an HTTP document root directory:
<
https://github.com/boostorg/beast/blob/34e78cb9004f9216ca389823c1118403d73c596d/example/advanced/server-flex/advanced_server_flex.cpp>
Here's a WebSocket chatroom server example with a Javascript client, so you can get a feel of how Beast WebSocket applications are designed. This will be the subject of my 1 hour talk at CppCon 2018 in September:
<
https://github.com/vinniefalco/CppCon2018>
Hope this helps!