LWS is Free Software using the MIT license.
git clone https://libwebsockets.org/repo/libwebsockets
| Role | Client | Server |
| http/1.x | ☠| ☠|
| http/2 | ☠| ☠|
| http/3 | ☠| ☠|
| websockets | ☠| ☠|
| ws-over-h2 | ☠| ☠|
| ws-over-h3 | ☠| ☠|
| webtransport | ☠| ☠|
| raw tcp / udp / file | ☠| ☠|
| MQTT | ☠| ⨯ |
New roles can be added cleanly to lws.
| TLS | Yes | No |
| GnuTLS | h1,h2,h3,wss,DTLS | |
| OpenSSL | h1,h2,wss,DTLS | h3 |
| LibreSSL | h1,h2,h3,wss,DTLS | |
| AWS-LC | h1,h2,h3,wss,DTLS | |
| BoringSSL | h1,h2,h3,wss,DTLS | |
| wolfSSL | h1,h2,h3,wss,DTLS | |
| Schannel | h1,h2,h3,wss,DTLS | |
| mbedTLS | h1,h2,wss,DTLS | h3 |
| BearSSL | h1,h2,wss | h3,DTLS |
LWS user code does not have to be customized depending on the event loop in use. For example LWS provides a generic high-resolution timer for each connection to arrange for delayed callbacks, hiding the details of the exact implementation depending on the chosen event loop.
Lws can coexist cleanly with an existing event loop library's loop, and be created and destroyed without disturbing the loop operation.
CMake is used to configure the sources for the platform it finds itself building on, and cross-build is also supported.