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

OSCHINA-MIRROR/acipenserinae-libwebsockets

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

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

Libwebsockets

Libwebsockets — это простая в использовании, лицензированная по лицензии MIT, чистая библиотека на языке C, предоставляющая клиент и сервер для HTTP/1, HTTP/2, WebSockets, MQTT и других протоколов в безопасном, легковесном, настраиваемом, масштабируемом и гибком виде. Она легко собирается и пересобирается через CMake и подходит для задач от встраиваемых RTOS до массового облачного обслуживания.Библиотека поддерживает множество легковесных вспомогательных реализаций для таких форматов, как JSON, CBOR, JOSE, COSE, а также поддерживает OpenSSL и MbedTLS версий 2 и 3 из коробки для всего. Она очень дружественна по отношению к общей обработке событий, поддерживая libuv, libevent, libev, sdevent, 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 была введена несколько лет назад. Это высокоуровневый интерфейс к lws wsi-уровневым api, который упрощает подключение, сегрегируя политику подключения, такую как протокол и информация о конечной точке, в отдельный JSON файл политики, и просто имея код, который работает с полезными данными; как можно больше деталей протокола связи скрыты или перемещены в политику, так что код пользователя почти не меняется, даже если протокол связи изменяется.

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

Ключевые записи политики, такие как конечная точка, могут содержать строковые подстановки ${metadata-name} для обработки адаптаций в реальном времени через метаданные. Поддерживается h1, h2, ws и mqtt.

Как слой на top lws wsi api, SS предоставляет более высокий уровень доступа к существующим wsi-уровневым возможностям. Оба типа API будут продолжать поддерживаться. Защищённые потоки живут дольше одного wsi, поэтому SS может координировать повторные попытки самостоятельно. Код пользователя на основе SS обычно значительно меньше и более поддерживаем, чем код на уровне wsi.В основной ветке я переместил старые примеры в ./minimal-examples-lowlevel и начинаю переносить больше случаев оттуда в примеры на основе SS.### Сравнение использования wsi и SS уровня lws|Функция|"низкоуровневый" wsi способ|способ Secure Streams| |---|---|---| |Создание контекста|код|одинаково| |Поддержка циклов, sul планировщика|по умолчанию, библиотеки событий|одинаково| |Поддержка режима коммуникации|Клиент, Сервер, Чистый|одинаково| |Поддержка протоколов|h1, h2, ws, mqtt (клиент)|одинаково| |Поддержка TLS|mbedtls (включая v3), openssl (включая v3), wolfssl, boringssl, libressl|одинаково| |Сериализуемый, проксируемый, мультиплексируемый, транспортный|Нет|Да| |Автоматически выделенный объект пользователя на соединение|pss, указанный в lws_protocols|указанный в структуре ss_info| |API пользователя соединения|Протокол-специфичные lws_protocols cbs (> 100)|SS API (rx, tx, state callbacks только)| |Адаптация отправки|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 политика, Автоматически| |Поток как Long Poll|код|JSON политика| |Аутентификация|код|JSON политика + автоматическая ротация, если поддерживается поставщиком, иначе код|### Сериализованные Secure Streams

API Secure Streams напрямую

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

API Secure Streams напрямую

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

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

Версия 4.3 выпущенаСм. журнал изменений

Обзор работы Lws

Первый коммит для lws будет отмечен 11-летием 28 октября 2021 года, это было много работы. Всего было сделано 4.3K патчей, затронувших 800KLOC в совокупности (это не размер в репозитории, а количество строк исходного кода, измененных патчами за годы).

Обзор

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

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

Поддержка

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

https://libwebsockets.org

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

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

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

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

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

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

Введение

Libwebsockets — это простая в использовании библиотека на чистом C с лицензией MIT. Она предоставляет клиент и сервер для HTTP/1, HTTP/2, WebSockets, MQTT и других протоколов. Библиотека ориентирована на безопасность, легковесна, настраиваема и масштабируема. Развернуть Свернуть
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