Beast Logo


Design Choices

WebSocket FAQ
Comparison to Zaphoyd Studios WebSocket++

The implementations are driven by business needs of cryptocurrency server applications (e.g. Ripple) written in C++. These needs were not met by existing solutions so Beast was written from scratch as a solution. Beast's design philosophy avoids flaws exhibited by other libraries:

Beast uses the DynamicBuffer concept presented in the Networking TS (N4588), and relies heavily on the Boost.Asio ConstBufferSequence and MutableBufferSequence concepts for passing buffers to functions. The authors have found the dynamic buffer and buffer sequence interfaces to be optimal for interacting with Asio, and for other tasks such as incremental parsing of data in buffers (for example, parsing websocket frames stored in a static_streambuf).

During the development of Beast the authors have studied other software packages and in particular the comments left during the Boost Review process of other packages offering similar functionality. In this section and the FAQs that follow we attempt to answer those questions that are also applicable to Beast.

"I would also like to see instances of this library being used in production. That would give some evidence that the design works in practice."

Beast.HTTP and Beast.WebSocket are production ready and currently running on public servers receiving traffic and handling millions of dollars worth of financial transactions daily. The servers run rippled, open source software (repository) implementing the Ripple Consensus Protocol, technology provided by Ripple.