facil.io — это микроплатформа на языке C для веб-приложений. В состав facil.io входят:
facil.io предоставляет высокопроизводительные TCP/IP сетевые службы для операционных систем Linux/BSD (и macOS) путём использования событийого дизайна (а также пула потоков и форка) и обеспечивает простое решение проблемы C10K.
Дополнительная информация о facil.io доступна на сайте facil.io.### Важно знать
Основная ветка (master
) в репозитории Git является разработочной веткой и может быть неработоспособной в любой момент времени (особенно во время работы над крупными изменениями, как это происходит сейчас).
Для производственных нужд выберите выпускную версию.
facil.io
Iodine, Ruby HTTP/Websockets сервер приложений основан на facil.io
— поэтому все те, кто используют сервер Iodine, работают на платформе Facil.io.
Вы используете facil.io
? Напишите мне!
#include "http.h" /* расширение HTTP для facil.io */
// Мы будем использовать этот обратный вызов в `http_listen`, чтобы обрабатывать HTTP запросы
void on_request(http_s *request);
facil.io
в вашем проектеВы можете либо начать новый проект с использованием facil.io
, либо просто добавить его в существующий проект. Для сборки используется GNU make
, а также поддерживаются скрипты CMake.
facil.io
должен быть совместим с C99.
facil.io
Чтобы начать новый проект с использованием фреймворка facil.io
, выполните следующую команду в терминале (замените appname
на желаемое имя вашего приложения):
$ bash <(curl -s https://raw.githubusercontent.com/boazsegev/facil.io/master/scripts/new/app) appnameВы можете [просмотреть этот скрипт здесь](scripts/new/app). Кратко, он создаст новую папку, скачает копию стабильной ветки, добавит демонстрационный шаблон кода и запустит `make clean` (что необходимо для создания структуры папок `tmp`).Затем отредактируйте `makefile`, чтобы удалить любые общие возможности, которые вам не нужны, такие как возможность `DUMP_LIB`, флаг `DEBUG` или дисассемблер `DISASM`, и приступайте к разработке.
Благодарность @benjcal за предложение этого скрипта.
Примечание: Ветка master является разработочной веткой. Пожалуйста, выберите последний тэг выпуска для получения самой последней стабильной версии.
facil.io
в существующий проектfacil.io представляет собой библиотеку исходного кода, поэтому легко скопировать исходный код в существующий проект и сразу же использовать эту библиотеку.
Команда make libdump
выгрузит все необходимые файлы в одну папку под названием libdump
, которую можно скопировать целиком или разделить на заголовочные и исходные файлы. Также возможно отдельное компилирование библиотеки facil.io
с помощью команды make lib
.
facil.io
как подмодуля CMakefacil.io также поддерживает как git
, так и подмодули CMake. Благодарность @OwenDelahoy (PR#8).
Сначала добавьте репозиторий в качестве подмодуля с помощью git
:
git submodule add https://github.com/boazsegev/facil.io.git
Затем добавьте следующую строку в проектный файл CMakeLists.txt
:
add_subdirectory(facil.io)
facil.io
с Mesonfacil.io доступен в Meson Wrap DB.Сначала установите файл wrap:
meson wrap install facil
Затем добавьте следующую строку в ваш проектный файл meson.build
:
facil_dep = subproject('facil').get_variable('facil_dep')
Папка examples включает в себя кодовые примеры для протокола эхо telnet (raw-echo.c), простого сервера "Hello World" (raw-http.c), примера для работы с Websocket pub/sub с (необязательной) Redis (http-chat.c) и т.д.
Вы можете найти больше информации на сайте facil.io
Руководство по вкладу можно найти здесь.
Конечно, почему бы и нет. Если вы сможете добавить поддержку Solaris или Windows для evio
и sock
, это может сделать facil
доступным для использования на этих платформах.
Если вы столкнулись с проблемами, откройте задачу (или даже лучше, запрос на слияние с исправлением) — это было бы замечательно :-)
Обращайтесь ко мне, если вам нужно:
Написать тесты... Мне всегда нужны больше тестов...
Помочь мне реализовать поддержку HPACK / HTTP2 протокола.
Помочь мне спроектировать / написать универсальную библиотеку помощника для маршрутизации HTTP для структуры http_s
.
Если вы хотите помочь мне написать новую библиотеку SSL/TLS или иметь решение SSL/TLS, которое мы можем внедрить в facil
(в виде исходного кода)... Обратите внимание: решения SSL/TLS должны подходить как для режима клиента, так и для режима сервера.* Если вы хотите помочь продвижению библиотеки, это будет здорово. Возможно, опубликуйте benchmarks или поделитесь своей историей.
Написание документации для сайта facil.io было бы замечательно. Я стараюсь поддерживать документацию исходного кода актуальной, но документация должна быть скопирована в папку docs
, чтобы запустить сайт документации.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )