• C/C++好用的websocket库


    Intrduction

    Libwebsockets is a simple-to-use, MIT-license, pure C library providing client and server for http/1, http/2, websockets, MQTT and other protocols in a security-minded, lightweight, configurable, scalable and flexible way. It’s easy to build and cross-build via cmake and is suitable for tasks from embedded RTOS through mass cloud serving.

    It supports a lot of lightweight ancilliary implementations for things like JSON, CBOR, JOSE, COSE, and supports OpenSSL and MbedTLS v2 and v3 out of the box for everything. It’s very gregarious when it comes to event loop sharing, supporting libuv, libevent, libev, sdevent, glib and uloop, as well as custom event libs.

    100+ independent minimal examples for various scenarios, CC0-licensed (public domain) for cut-and-paste, allow you to get started quickly.

    There are a lot of READMEs on a variety of topics.

    We do a huge amount of CI testing per push, currently 582 builds on 30 platforms. You can see the lws CI rack and read about how lws-based Sai is used to coordinate all the testing.

    Architecture

    在这里插入图片描述

    Serialized Secure Streams

    Secure Streams direct

    Secure Streams APIs are also serializable, the exact same client code can fulfil the connection directly in the same process as you would expect, or forward the actions, metadata and payloads to an SS Proxy that owns the policy over a Unix Domain or TCP socket connection to be fulfilled centrally. This allows, eg, h2 streams from different processes sharing a single connection.

    在这里插入图片描述

    The serialized SS can also travel over generic transports like UART, an example is provided implementing the Binance example on an RPi Pico with a UART transport to a UART transport SS proxy, where the pico itself has no network stack, tls, compression or wss stack, but can send and receive to and from the endpoint as if it did.

    The optional lws_trasport_mux is used to interpose between the UART transport and the SSPC layer, allowing a single pipe to carry many separate SS connections.

    The user SS code is identical however it is transported, muxed and fulfilled.

    v4.3 is released

    See the changelog

    Lws work retrospective

    The initial commit for lws will have been 11 years ago come Oct 28 2021, it’s been a lot of work. There are a total of 4.3K patches, touching 800KLOC cumulatively (this is not the size in the repo, but over the years, how many source lines were changed by patches).
    在这里插入图片描述

    Gratifyingly, it turns out over the years, ~15% of that was contributed by 404 contributors: that’s not so bad. Thanks a lot to everyone who has provided patches.

    Today at least tens of millions of devices and product features rely on lws to handle their communications including several from FAANG; Google now include lws as part of Android sources.

    Support

    This is the libwebsockets C library for lightweight websocket clients and servers. For support, visit

    https://libwebsockets.org

    and consider joining the project mailing list at

    https://libwebsockets.org/mailman/listinfo/libwebsockets

    You can get the latest version of the library from git:

    https://libwebsockets.org/git
    Doxygen API docs for development: https://libwebsockets.org/lws-api-doc-main/html/index.html

  • 相关阅读:
    【K8s】—— 安装和设置kubectl
    芒果改进YOLOv7系列:首发改进特征融合网络BiFPN结构,融合更多有效特征
    企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图
    【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter22-gawk 进阶
    [附源码]java毕业设计基于ssm的电子网上商城
    tkinter常用组件
    分布式环境下的接口幂等性
    Vim + YCM + clangd
    MVCC及实现原理
    Redis主从复制
  • 原文地址:https://blog.csdn.net/lianshaohua/article/details/126918551