canonical libwebsockets.org networking library
当前访问频次受限,请登录后继续访问
Libwebsockets
Libwebsockets 是一个易于使用的 MIT 许可纯 C 库,以注重安全、轻量、可配置、可扩展且灵活的方式,为 http/1、http/2、http/3、websockets、webtransport、MQTT 及其他协议提供客户端和服务器。 它通过 cmake 即可轻松构建和交叉构建,适用于从嵌入式 RTOS 到大规模云端服务的各类场景。
它支持大量轻量级辅助实现,涵盖 JSON、CBOR、JOSE、COSE 等,并开箱即支持 OpenSSL 和 MbedTLS v2/3/4,以覆盖所有场景。 在事件循环共享方面,它兼容性极强,支持 libuv、libevent、libev、sdevent、glib 和 uloop,也支持自定义事件库。
100+ 个独立最小示例 覆盖各种场景,采用 CC0 许可(公有领域),方便复制粘贴,让你快速上手。
有大量 README 介绍多种主题。 Doxygen API 文档

V5.0 现已可用……请升级到该版本,更推荐升级到 v5.0-stable 或 main,因为许多安全修复仅在 v5.0-stable 和 main 中提供;5.0 之前的版本实际上已弃用。
目前持续进行增量安全审计,随时发现并修复新问题;这并不意味着代码薄弱,而是说明我正在使用前沿模型让它变得极其强健。
** v5.0 新增特性 **
- 新增对 SChannel(Windows 原生 TLS,无需构建 OpenSSL!)、GnuTLS、openHiTLS 和 BearSSL 的支持
- 使用 aws-lc、wolfssl、boringssl、libressl、gnutls 和 schannel 的 QUIC + H3 + Webtransport 实现(OpenSSL 仅支持 h1/h2;mbedtls 可通过补丁实现)
- WebRTC 混流(类似自建 Zoom)
- HLS 分发
| LWS 版本 | 平台 | 协议 | 默认 TLS |
|---|---|---|---|
| <= 4.5 | 非 FreeRTOS | 任意 | OpenSSL |
| <= 4.5 | FreeRTOS | 任意 | mbedTLS |
| 5.0+ | Windows | 任意 | schannel |
| 5.0+ | *nix | h1, h2 | OpenSSL |
| 5.0+ | *nix | quic/h3 | GnuTLS |
| 5.0+ | FreeRTOS | 任意 | mbedTLS |
quic/h3 默认在构建中启用……这要求使用 GnuTLS 而非 OpenSSL,以使 quic/h3 可用。
| TLS 库 | 服务器 TLS | 客户端 TLS | QUIC 传输(TLS 1.3) | WSS / HTTPS | 基于 TLS 的 MQTT | ALPN(HTTP/2) | DTLS(WebRTC) | 会话缓存 | JIT Trust | GenCrypto |
|---|---|---|---|---|---|---|---|---|---|---|
| GnuTLS | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| OpenSSL | 是 | 是 | 否* | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
| LibreSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| AWS-LC | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| BoringSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| wolfSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| mbedTLS | 是 | 是 | 需要补丁 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
| SChannel | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| BearSSL | 是 | 是 | 否 | 是 | 是 | 是 | 否 | 是 | 是 | 是 |
| openHiTLS | 是 | 是 | 否 | 是 | 是 | 是 | 是(不支持 SRTP) | 是 | 是 | 是 |
* 注:1) 上游 OpenSSL 未提供 LWS 的 QUIC 传输作为加密引擎所需的关键 QUIC TLS API(SSL_set_quic_method)。如果需要 QUIC/HTTP3 支持,我们建议使用 BoringSSL 或 GnuTLS。
* *注:2) openHiTLS 未提供所需的 QUIC TLS API *
- 内置 DHT 支持:
-DLWS_WITH_DHT=1
项目介绍
官方标准libwebsockets.org网络编程库【此简介由AI生成】