O FACIL.IO é um micro-quadro C para aplicativos da Web. facil.io inclui:
O FACIL.IO fornece serviços de rede TCP / IP de alto desempenho para Linux / BSD (e MacOS) usando um design de eventos (bem como suporte ao pool de threads e bobina) e fornece uma solução fácil para o problema C10K.
Você pode ler mais sobre facil.io no site facil.io.
A filial mestre no repositório git é o ramo de desenvolvimento e provavelmente será quebrado a qualquer momento (especialmente quando trabalha em grandes revisões, como estou no momento).
Selecione uma versão de liberação para qualquer necessidade de produção.
facil.io O iodo, um servidor de aplicativos Ruby HTTP/WebSockets Ruby é alimentado pelo facil.io - então todos que usam o servidor iodo está em execução no facil.io.
Você está usando facil.io ? Avise!
#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 em seu projeto É possível iniciar um novo projeto com facil.io ou simplesmente adicioná -lo a um existente. O GNU make é o sistema de construção padrão e o CMake também é suportado.
facil.io deve ser compatível com C99.
facil.io Para iniciar um novo projeto usando o facil.io Framework, execute o seguinte comando no terminal (altere appname para o que você quiser):
$ bash <(curl -s https://raw.githubusercontent.com/boazsegev/facil.io/master/scripts/new/app) appname
Você pode revisar o script aqui. Em resumo, ele criará uma nova pasta, baixará uma cópia da filial estável, adicionará algum código de placa da caldeira de demonstração e execute make clean (que é necessária para criar a estrutura da pasta tmp ).
Em seguida, edite o makefile para remover os recursos genéricos de que não precisar, como o recurso DUMP_LIB , o sinalizador DEBUG ou o DISAMS desmontagem e o desenvolvimento do início.
Crédito a @benjcal por sugerir o script.
Aviso: o ramo principal é o ramo de desenvolvimento. Selecione a tag de lançamento mais recente para a versão mais recente de lançamento estável.
O FACIL.IO é uma biblioteca de código -fonte, por isso é fácil copiar o código -fonte em um projeto existente e começar a usar a biblioteca imediatamente.
O comando make libdump despejará todos os arquivos relevantes em uma única pasta chamada libdump , e você pode copiar todos eles ou dividi -los em arquivos de origem e de origem.
Também é possível compilar a biblioteca FACIL.IO usando o comando make lib .
facil.io como um submódulo de cmake O Facil.io também suporta submódulos git e CMake. Crédito para @owendelahoy (Pr#8).
Primeiro, adicione o repositório como um submódulo usando git :
git submodule add https://github.com/boazsegev/facil.io.git
Em seguida, adicione a seguinte linha os CMakeLists.txt do projeto.txt
add_subdirectory(facil.io)
facil.io com mesonO Facil.io está disponível no Meson Wrap DB.
Primeiro, instale o arquivo WRAP:
meson wrap install facil
Em seguida, adicione a seguinte linha à meson.build do seu projeto:
facil_dep = subproject('facil').get_variable('facil_dep')
A pasta Exemplos inclui exemplos de código para um protocolo Telnet Echo, um servidor Hello World simples, um exemplo para o WebSocket Pub/sub com redis (opcional), etc.
Você pode encontrar mais informações no site facil.io
O guia de contribuição pode ser encontrado aqui.
Claro, por que não. Se você puder adicionar o suporte a Solaris ou Windows a evio e sock , isso pode significar que facil também ficaria disponível para uso nessas plataformas.
Se você encontrar algum problema, abra um problema (ou, melhor ainda, uma solicitação de tração com uma correção) - isso seria ótimo :-)
Bata -me se quiser:
Escreva testes ... Eu sempre preciso de mais testes ...
Ajude -me a escrever suporte ao protocolo HPACK / HTTP2.
Ajude -me a projetar / escrever uma biblioteca genérica HTTP Routing Helper para a estrutura http_s .
Se você quiser me ajudar a escrever uma nova biblioteca SSL/TLS ou ter uma solução SSL/TLS, podemos encaixar no facil (como código -fonte) ... NOTA: As soluções SSL/TLS devem caber nos modos de cliente e servidor.
Se você quiser ajudar a promover a biblioteca, isso também seria ótimo. Talvez publique benchmarks ou compartilhe sua história.
Escrever documentação no site facil.io seria ótimo. Eu mantenho a documentação do código -fonte atualizada, mas a documentação deve ser copiada para a pasta docs para colocar o site de documentação em funcionamento.