Minor breaking changes
- A new required method has been added to the transport and socket policy api. An implementation is optional. All built in transport policies have been updated. Authors of custom transports will need to, at minimum, add an empty method with the right signature.
- A C++11 related dependency cleanup has swapped the dependency on libboost-date_time for libboost-chrono for C++03 compilers using Boost version 1.49 and later. C++11 compilers will no longer need libboost-date_time at all. C++03 compilers using Boost 1.48 and older are not affected and will still require libboost-date_time.
Adds non-blocking HTTP handlers
Non-blocking http handlers provide significant performance improvements for applications that need to serve a longer running HTTP response without blocking WebSocket traffic. See the HTTP Handler manual page for usage information.
Asio Transport TLS/Security related improvements
- Asio Transport now supports outgoing connections using SNI when the underlying version of openssl supports it.
- Bundled examples using the TLS enabled Asio config now demonstrate how to achieve compliance with Mozilla’s recommended TLS settings. echo_server_tls compiled with the modern flag and a modern version of openssl now passes the SSL Labs server test with a grade of A.
Standalone Asio now supported
Asio Transport may optionally use standalone Asio rather than Boost Asio. This allows the use of the Asio transport with a C++11 build environment without any Boost libraries. To enable, define
ASIO_STANDALONE before any WebSocket++ or Asio headers.
Raw/iostream transport vectored write handler
The raw/iostream transport may now optionally register a handler for vectored or scatter/gather writes. This results in fewer callbacks and allows more efficient packing of multiple small writes into a single TCP packet or TLS record. If no vectored write handler is set, the standard write handler will be called multiple times.