Facil.io是用於Web應用程序的C微框架。 facil.io包括:
Facil.io通過使用事件設計(以及線程池和分叉支持)為Linux / BSD(和MACOS)提供高性能TCP / IP網絡服務,並為C10K問題提供了一個簡單的解決方案。
您可以在facil.io網站上閱讀有關facil.io的更多信息。
git存儲庫的主分支是開發分支,並且很可能在任何給定時間(尤其是在進行重大修訂時,就像我目前正在進行重大修訂時)。
請為任何生產需求選擇發行版。
facil.io上跑步iodine,Ruby HTTP/Websockets Ruby Application Server由facil.io提供動力 - 因此,使用碘服務器的每個人都在facil.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框架啟動新項目,請在終端中運行以下命令(將appname更改為您想要的任何內容):
$ bash <(curl -s https://raw.githubusercontent.com/boazsegev/facil.io/master/scripts/new/app) appname
您可以在此處查看腳本。簡而言之,它將創建一個新文件夾,下載穩定分支的副本,添加一些演示鍋爐板代碼並運行make clean (這是構建tmp文件夾結構所需的)。
接下來,編輯makefile以刪除您不需要的任何通用功能,例如DUMP_LIB功能, DEBUG標誌或DISAMS拆卸器並開始開發。
感謝@benjcal建議腳本。
注意:主分支是開發分支。請為最新的穩定版本版本選擇最新版本標籤。
Facil.io是一個源代碼庫,因此很容易將源代碼複製到現有項目中,然後立即使用庫。
make libdump命令將將所有相關文件轉載到一個稱為libdump的單個文件夾中,您可以將它們全部複製或將它們分為標題和源文件。
也可以使用make lib命令分別編譯facil.io庫。
facil.io作為cmake subsodule Facil.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與Meson一起使用Facil.io可在Meson Wrap DB上找到。
首先,安裝包裝文件:
meson wrap install facil
然後將以下行添加到您的項目的meson.build 。
facil_dep = subproject('facil').get_variable('facil_dep')
示例文件夾包括telnet Echo協議的代碼示例,簡單的Hello World Server,一個帶有(可選)REDIS等的WebSocket Pub/sub的示例。
您可以在facil.io網站上找到更多信息
可以在此處找到貢獻指南。
當然,為什麼不。如果您可以將Solaris或Windows支撐添加到evio和sock中,則可能意味著facil也可以在這些平台上使用。
如果您遇到任何問題,請打開問題(或者更好的是使用修復程序的拉動請求) - 這將很棒:-)
如果您想打我:
寫測試...我總是需要更多測試...
幫助我編寫HPACK / HTTP2協議支持。
幫助我為http_s結構設計 /編寫一個通用的HTTP路由助手庫庫。
如果您想幫助我編寫一個新的SSL/TLS庫或具有可以擬合到facil SSL/TLS解決方案(作為源代碼)...注意:SSL/TLS Solutions應該適合客戶端和服務器模式。
如果您想幫助推廣圖書館,那也很棒。也許發布基准或分享您的故事。
將文檔寫入facil.io網站將很棒。我將源代碼文檔進行公平更新,但是該文檔應複製到docs文件夾,以使文檔網站啟動並運行。