FARIL.IO-это C-микро-обрабатная работа для веб-приложений. FARIL.IO включает в себя:
FARIL.IO предоставляет высокопроизводительные сервисы TCP / IP Network для Linux / BSD (и macOS) с использованием событий (а также пула потоков и поддержки развязки) и обеспечивает простое решение для задачи C10K.
Вы можете прочитать больше о Facil.io на веб -сайте Facil.io.
Мастерская филиал на git Repo является филиалом разработки и, вероятно, будет сломана в любой момент времени (особенно при работе над основными изменениями, как и в данный момент).
Пожалуйста, выберите версию релиза для любых производственных потребностей.
facil.io Йод, Ruby HTTP/WebSockets Ruby Application Server оснащен facil.io - так что все, кто использует йод -сервер, работают на FARIL.IO.
Вы используете facil.io ? Дайте мне знать!
#include "http.h" /* the HTTP facil.io extension */
// We'll use this callback in `http_listen`, to handles HTTP requests
void on_request ( http_s * request );
// These will contain pre-allocated values that we will use often
FIOBJ HTTP_X_DATA ;
// Listen to HTTP requests and start facil.io
int main ( int argc , char const * * argv ) {
// allocating values we use often
HTTP_X_DATA = fiobj_str_new ( "X-Data" , 6 );
// listen on port 3000 and any available network binding (NULL == 0.0.0.0)
http_listen ( "3000" , NULL , . on_request = on_request , . log = 1 );
// start the server
facil_start (. threads = 1 );
// deallocating the common values
fiobj_free ( HTTP_X_DATA );
}
// Easy HTTP handling
void on_request ( http_s * request ) {
http_set_cookie ( request , . name = "my_cookie" , . name_len = 9 , . value = "data" ,
. value_len = 4 );
http_set_header ( request , HTTP_HEADER_CONTENT_TYPE ,
http_mimetype_find ( "txt" , 3 ));
http_set_header ( request , HTTP_X_DATA , fiobj_str_new ( "my data" , 7 ));
http_send_body ( request , "Hello World!rn" , 14 );
}facil.io в вашем проекте Можно либо запустить новый проект с facil.io , либо просто добавить его в существующий. GNU make - это система сборки по умолчанию, а также поддерживается CMAKE.
facil.io должен быть C99 совместим.
facil.io Чтобы запустить новый проект, используя facil.io Framework, запустите следующую команду в терминале (измените appname на все, что вы хотите):
$ bash <(curl -s https://raw.githubusercontent.com/boazsegev/facil.io/master/scripts/new/app) appname
Вы можете просмотреть сценарий здесь. Короче говоря, он создаст новую папку, загрузите копию стабильной ветви, добавьте немного демо -коренной пластины и запустите make clean (которая требуется для создания структуры папки tmp ).
Затем отредактируйте makefile , чтобы удалить любые общие функции, которые вам не нужны, такие как функция DUMP_LIB , флаг DEBUG или DISAMS Disassassembler и Start Development.
Кредит @benjcal за предложение сценария.
Обратите внимание: главная филиал - это филиал разработки. Пожалуйста, выберите последний тег выпуска для последней стабильной версии релиза.
FARIL.IO - это библиотека исходного кода, поэтому легко скопировать исходный код в существующий проект и сразу же начать использовать библиотеку.
Команда make libdump будет выбросить все соответствующие файлы в одну папку, называемую libdump , и вы можете скопировать их все или разделить их на исходные файлы заголовка и исходные файлы.
Также можно собрать библиотеку FARIL.IO отдельно, используя команду make lib .
facil.io в качестве подмодуля CMAKE FARIL.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 с mesonFARIL.IO доступен в Meson Wrap DB.
Сначала установите файл обертки:
meson wrap install facil
Затем добавьте следующую строку в meson.build вашего проекта:
facil_dep = subproject('facil').get_variable('facil_dep')
Папка «Примеры» включает в себя кодовые примеры для протокола эхо -эхо -телекана, простого сервера Hello World, пример для паба WebSocket/sub с (необязательно) Redis и т. Д.
Вы можете найти больше информации на веб -сайте FARIL.IO
Руководство по взносу можно найти здесь.
Конечно, почему бы и нет. Если вы можете добавить поддержку Solaris или Windows в evio и sock , это может означать, что facil также станет доступным для использования на этих платформах.
Если вы столкнетесь с какими -либо проблемами, откройте проблему (или, что еще лучше, запрос на притяжение с исправлением) - это было бы здорово :-)
Ударь меня, если хочешь:
Напишите тесты ... мне всегда нужно больше тестов ...
Помогите мне написать поддержку протокола HPACK / HTTP2.
Помогите мне разработать / написать общую HTTP -маршрутизационную библиотеку маршрутизации для http_s struct.
Если вы хотите помочь мне написать новую библиотеку SSL/TLS или иметь решение SSL/TLS, мы можем вписаться в facil (в качестве исходного кода) ... Примечание: решения SSL/TLS должны соответствовать режимам клиента и сервера.
Если вы хотите помочь продвинуть библиотеку, это также было бы здорово. Возможно, опубликуйте тесты или поделитесь своей историей.
Написание документации на веб -сайте facil.io было бы отличным. Я справедливо обновлена документация исходного кода, но документация должна быть скопирована в папку docs , чтобы запустить и запустить веб -сайт документации.