1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/acipenserinae-libwebsockets

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Статус CI Статус сборки Coverity Scan Лучшие практики CII Бейдж Codacy Общее количество уведомлений Оценка языка: C/C++ Оценка языка: JavaScript

Libwebsockets

Libwebsockets — это простая в использовании, лицензированная по лицензии MIT, чистая библиотека на языке C, предоставляющая клиент и сервер для протоколов HTTP/1, HTTP/2, WebSockets, MQTT и других протоколов с учётом безопасности, легковесности, конфигурирования, масштабируемости и гибкости. Она легко собирается и пересобирается через CMake и подходит для задач от встраиваемых систем реального времени до массового облачного обслуживания.

Эта библиотека поддерживает множество легковесных вспомогательных реализаций для таких вещей как JSON, CBOR, JOSE, COSE и поддерживает OpenSSL и MbedTLS версий 2 и 3 прямо из коробки для всего. Библиотека очень дружелюбна к событийным циклам, поддерживающим libuv, libevent, libev, sd_event, GLib и uloop, а также пользовательские библиотеки событий.

Более 100 независимых минимальных примеров для различных сценариев, лицензированных по CC0 (общественное достояние), позволяют вам быстро начать работу.

Существует много README на различные темы.

Мы проводим огромное количество тестирования CI при каждом коммите, в настоящее время 582 сборки на 30 платформах. Вы можете увидеть локальную установку CI для lws и прочитать о том, как lws-основанный Sai используется для координации всех тестов.

Обзор

Новости

Отображение стека HTML + CSS + JPEG + PNG в lws

Хотите использовать HTML + CSS для управления вашим EPD или TFT/OLED дисплеем? У вас есть только ESP32?

Хотите удалённый JPEG, PNG, HTML, RGBA композицию, гамму, диффузию ошибок, если они нужны?

Реальное время рендеринг в строковый буфер, потому что у вас недостаточно памяти для буфера кадра?

Посмотрите здесь...

Доступна привязка Perl для lws

Спасибо Фелипе Гасперу, теперь доступна привязка Perl для lws на MetaCPAN, которая использует недавно добавленную общую поддержку событийного цикла в lws для использования lws как гостя на существующем событийном цикле Perl.

Примеры lws переходят на защищённые потоки

Прямое использование безопасных потоков

Поддержка защищённых потоков в lws была представлена несколько лет назад, это более высокий уровень интерфейса к базовым API уровня WSI в lws, который упрощает соединяемость путём разделения политики соединения, такой как протокол и конечная точка информации, в отдельный JSON файл политики, и просто имеет код, работающий с данными; как можно больше деталей протокола передачи скрыты или перемещены в политику, так что код пользователя почти одинаков даже если протокол передачи меняется.

Код пользователя просто запрашивает создание SS по имени "streamtype name", которое создаётся согласно деталям (протокол, конечная точка и т.д.) под тем же именем в политике.

Основные записи политики, такие как конечная точка, могут содержать строковые замены ${metadata-name}, чтобы обрабатывать адаптацию во время выполнения через метаданные. Поддерживаются H1, H2, WS и MQTT.

Как слой поверх базовых API уровня WSI, защищённые потоки предоставляют более высокий уровень доступа к уже имеющимся возможностям уровня WSI, оба типа API будут продолжать поддерживаться. Защищённые потоки являются долгоживущими по сравнению с одним WSI, поэтому SS может самостоятельно координировать повторные попытки. Код пользователя на основе SS обычно значительно меньше и более поддерживаемым, чем код уровня WSI.

В основной ветке я переместил старые примеры в ./minimal-examples-lowlevel и начал портировать большинство случаев оттуда в примеры на основе SS.

Сравнение между уровнем WSI и уровнем Secure Streams|Функция|«низкий уровень» wsi способ|Secure Streams способ|

|---|---|---| |Создание контекста|код|такой же| |Поддержка цикла событий, планировщика sul|по умолчанию, библиотеки событий|такой же| |Поддержка режима связи|клиент, сервер, сырой|такой же| |Поддержка протоколов|h1, h2, ws, mqtt (клиент)|такой же| |Поддержка TLS|mbedtls (включая v3), openssl (включая v3), wolfssl, boringssl, libressl|такой же| |Сериализация, прокси, мультиплексирование, транспортирование|нет|да| |Автоматически выделенный объект пользователя на соединении|pss указано в lws_protocols|Указано в структуре ss_info| |API объекта пользователя соединения|Протокольно специфичные lws_protocols cb (> 100)|SS API (rx, tx, состояния cb только)| |Адаптация отправки|lws_callback_on_writable() + WRITEABLE|lws_ss_request_write() + tx() cb| |Отправочный буфер|Выбран пользователем + частично обработанный malloc|SS-предоставляемый, нет частичных| |Создание виртуальных хостов|код|JSON политика| |Проверка TLS|сертификатный пакет или код|JSON политика, или сертификатный пакет| |Переподключение соединения / задержка|код|JSON политика, Автоматическое| |Закрепление|код|JSON политика, Автоматическое| |Детали конечной точки и протокола|разбросаны по коду|JSON политика| |Выбор протокола, канал / поток делегирования|код|JSON политика| |Выбор подпротокола ws|код|JSON политика| |WS двоичный / текстовый|код|JSON политика| |Протокольно специфическая метаданные|Протокольно специфические api в коде (например, lws_hdr)|JSON политика, общие api метаданных в коде| |Правила действительности соединения|структура|JSON политика, Автоматическое| |Поток как длинное ожидание|код|JSON политика| |Аутентификация|код|JSON политика + автоматический поворот, если поддерживается поставщиком, иначе код|

Сериализованные Secure Streams

Прямое использование безопасных потоков

API Secure Streams также сериализованы, точно такой же клиентский код может выполнять соединение напрямую в том же процессе, как вы бы ожидали, или передавать действия, метаданные и данные до SS Прокси, владеющего политикой через Unix Domain или TCP сокетное соединение для выполнения центрально. Это позволяет, например, потокам h2 из разных процессов использовать одну связь.

Прямое использование безопасных потоков

Сериализованные SS также могут путешествовать через общие транспорты, такие как UART, предоставлена пример реализации примера Binance на RPi Pico с транспортом UART до прокси-прокси-транспорта UART, где сам Pico не имеет сетевого стека, TLS, сжатия или WSS стека, но может отправлять и получать данные до и от конечной точки, как будто он имел бы.

Необходимый lws_transport_mux используется для внесения промежуточного звена между транспортом UART и уровнем SSPC, позволяя одному каналу нести многие отдельные соединения SS.

Код пользователя SS остаётся таким же, независимо от того, как он транспортируется, мультиплексируется и выполняется.

Версия 4.3 выпущена

Чтобы узнать подробнее, обратитесь к логу изменений

Обзор работы с lws

Первая коммита для lws будет иметь место 11 лет спустя с 28 октября 2021 года, это было много работы. Всего 4300 патчей, затронувших 800000 строк кода накопительно (это не размер в репозитории, но количество строк кода, изменённых патчами за годы).

Обзор

Удовлетворительно, оказывается, что за эти годы около 15% этого было предоставлено 404 участниками: это совсем неплохо. Большое спасибо всем, кто предоставляет патчи.

Сегодня хотя бы десятки миллионов устройств и продуктов используют lws для обработки своих коммуникаций, включая несколько от FAANG; Google теперь включает lws как часть источников Android.

Поддержка

Это библиотека libwebsockets на языке C для легковесных клиентов и серверов WebSocket. Для получения поддержки посетите

https://libwebsockets.org

и рассмотрите возможность присоединения к списку рассылки проекта по адресу

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

Вы можете получить последнюю версию библиотеки из git:

Документация Doxygen для разработки: https://libwebsockets.org/lws-api-doc-main/html/index.html

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Libwebsockets — это простая в использовании библиотека на чистом C с лицензией MIT. Она предоставляет клиент и сервер для HTTP/1, HTTP/2, WebSockets, MQTT и других протоколов. Библиотека ориентирована на безопасность, легковесна, настраиваема и масштабируема. Развернуть Свернуть
C и 6 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/acipenserinae-libwebsockets.git
git@api.gitlife.ru:oschina-mirror/acipenserinae-libwebsockets.git
oschina-mirror
acipenserinae-libwebsockets
acipenserinae-libwebsockets
main