libwebsockets:基于 C 语言的轻量级网络协议库项目

canonical libwebsockets.org networking library

分支76Tags226
当前项目代码仓暂无内容

CI 状态 Coverity Scan 构建状态 CII 最佳实践

Libwebsockets

Libwebsockets 是一个易于使用、采用 MIT 许可证的纯 C 库,以注重安全、轻量级、可配置、可扩展且灵活的方式提供 http/1http/2http/3websocketswebtransportMQTT 及其他协议的客户端和服务器功能。它可通过 cmake 轻松构建和交叉构建,适用于从嵌入式 RTOS 到大规模云服务的各类任务。

它支持许多轻量级的辅助实现,如 JSON、CBOR、JOSE、COSE 等,并原生支持 OpenSSL 和 MbedTLS v2/3/4 以处理所有相关功能。在事件循环共享方面,它具有很强的兼容性,支持 libuv、libevent、libev、sdevent、glib 和 uloop,以及自定义事件库。

100 多个独立的最小示例 涵盖了各种场景,采用 CC0 许可(公共领域),可直接复制粘贴使用,助您快速入门。

这里有许多关于各种主题的 README 文档Doxygen API 文档

我们每次推送都会进行大量的 CI 测试

概览

V5.0 现已发布……请升级到此版本,因为许多安全修复仅在 v5.0 和 main 分支上可用。

** v5.0 版本的新特性 **

  • 新增对 SChannel(Windows 原生 TLS,无需构建 OpenSSL!)、GnuTLS、openHiTLS 和 BearSSL 的支持
  • QUIC + H3 + Webtransport 实现,可使用 aws-lc、wolfssl、boringssl、libressl、gnutls 和 schannel(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 MQTT over TLS ALPN(HTTP/2) DTLS(WebRTC) 会话缓存 JIT 信任 通用加密
GnuTLS
OpenSSL *
LibreSSL
AWS-LC
BoringSSL
wolfSSL
mbedTLS 需要补丁
SChannel
BearSSL
openHiTLS 是(非 SRTP)

* 注:1) 上游 OpenSSL 未提供必要的 QUIC TLS API (SSL_set_quic_method) 以充当 LWS QUIC 传输的加密引擎。如果您需要 QUIC/HTTP3 支持,建议使用 BoringSSL 或 GnuTLS。 * *注:2) openHiTLS 未提供必要的 QUIC TLS API *

  • 内置 DHT 支持:-DLWS_WITH_DHT=1