WebSocket++

WebSocket++ is an open source (BSD license) header only C++ library that impliments RFC6455 The WebSocket Protocol. It allows integrating WebSocket client and server functionality into C++ programs. It uses interchangeable network transport modules including one based on C++ iostreams and one based on Asio.

Development Status

WebSocket++ is largely feature complete. It supports RFC6455 (The WebSocket Protocol) and RFC7692 (Compression Extensions for WebSocket) fully. The library is actively maintained to develop documentation, fix bugs, and support newer build environments and versions of related libraries (OpenSSL, Asio). Some additional development continues in the areas of new features and performance improvements as time allows.

Features

Server Library
Client Library
License BSD
Library Type Header only
Protocol Support Full support: RFC6455
Partial support: Hixie draft 76, Hybi Drafts 7-17
Browser Support Full support: FireFox 6+, Chrome 14+, IE 10+, Safari & Mobile Safari 6+,
Partial support: FireFox 4-5, Chrome 4-13, Safari 5.0.2+, Mobile Safari 4.2+, Opera 11.0+
Platform Support Generally portable. Tested with Linux, OS X, Windows. GCC, LLVM/Clang, Visual Studio. Intel x64, i386, PowerPC, ARM
API Type Asynchronous, message based
Message Types Binary and utf-8 text (not all browsers support binary)
Extension Support Full support for RFC7692 compression. All parameters configurable.
Message Size Limit memory limited, configurable
TLS Support
IPv6 Support
Manual Ping/Pong
Proxy Support Outgoing explicit proxies for regular and secure WebSocket. Basic authentication.
Flow Control Configurable and poll-able queuing for sending and receiving.
Handshake features Passes through all HTTP headers for application use
subprotocol negotiation
custom HTTP errors for application defined handshake failures
application defined HTTP headers in handshake response
HTTP request pass through
Protocol Test Report Autobahn Report (Server)
Autobahn Report (Client)