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文件夹,以使文档网站启动并运行。