Facil.io est un micro-trame C pour les applications Web. facil.io comprend:
Facil.io fournit des services de réseau TCP / IP haute performance à Linux / BSD (et macOS) en utilisant une conception amenée (ainsi que le pool de threads et la prise en charge) et fournit une solution facile au problème C10K.
Vous pouvez en savoir plus sur FACIL.IO sur le site Web Facil.io.
La branche principale du dépôt git est la branche de développement et devrait être brisée à tout moment (en particulier lorsque je travaille sur des révisions majeures, comme je le suis en ce moment).
Veuillez sélectionner une version de version pour tous les besoins de production.
facil.io Iode, un serveur d'applications Ruby Ruby HTTP / WebSockets est alimenté par facil.io - afin que tous ceux qui utilisent le serveur d'iode s'exécutent sur facil.io.
Utilisez-vous facil.io ? Fais-moi savoir!
#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 dans votre projet Il est possible de démarrer un nouveau projet avec facil.io ou simplement l'ajouter à un nouveau procédure existant. GNU make est le système de construction par défaut et Cmake est également pris en charge.
facil.io doit être compatible C99.
facil.io Pour démarrer un nouveau projet à l'aide du framework facil.io , exécutez la commande suivante dans le terminal (modifiez appname à ce que vous voulez):
$ bash <(curl -s https://raw.githubusercontent.com/boazsegev/facil.io/master/scripts/new/app) appname
Vous pouvez passer en revue le script ici. En bref, il créera un nouveau dossier, téléchargera une copie de la branche stable, ajoutera du code de plaque de chaudière de démonstration et exécutez make clean (qui est nécessaire pour construire la structure du dossier tmp ).
Ensuite, modifiez le makefile pour supprimer toutes les fonctionnalités génériques dont vous n'avez pas besoin, telles que la fonctionn de fonction DUMP_LIB , le drapeau DEBUG ou le désassembleur DISAMS et le développement.
Crédit à @benjcal pour avoir suggéré le script.
AVIS: La branche principale est la branche de développement. Veuillez sélectionner la dernière balise de version pour la dernière version de version stable.
Facil.io est une bibliothèque de code source, il est donc facile de copier le code source dans un projet existant et de commencer à utiliser la bibliothèque immédiatement.
La commande make libdump videra tous les fichiers pertinents dans un seul dossier appelé libdump , et vous pouvez les copier tous ou les diviser en fichiers source d'en-tête et.
Il est également possible de compiler séparément la bibliothèque facil.io à l'aide de la commande make lib .
facil.io comme sous-module CMake Facil.io prend également en charge les sous-modules git et CMake. Crédit à @owendelahoy (PR # 8).
Tout d'abord, ajoutez le référentiel en sous-module à l'aide de git :
git submodule add https://github.com/boazsegev/facil.io.git
Puis ajoutez la ligne suivante le CMakeLists.txt du projet.txt
add_subdirectory(facil.io)
facil.io avec Mesonfacil.io est disponible chez Meson Wrap DB.
Tout d'abord, installez le fichier de wrap:
meson wrap install facil
Ensuite, ajoutez la ligne suivante à meson.build de votre projet:
facil_dep = subproject('facil').get_variable('facil_dep')
Le dossier Exemples comprend des exemples de code pour un protocole Telnet Echo, un simple Hello World Server, un exemple pour WebSocket Pub / Sub avec (Facultatif) Redis, etc.
Vous pouvez trouver plus d'informations sur le site Web Facil.io
Le guide de contribution peut être trouvé ici.
Bien sûr, pourquoi pas. Si vous pouvez ajouter un support Solaris ou Windows à evio et sock , cela pourrait signifier facil serait également disponible pour une utilisation sur ces plates-formes.
Si vous rencontrez des problèmes, ouvrez un problème (ou, encore mieux, une demande de traction avec un correctif) - ce serait génial :-)
Frappez-moi si vous voulez:
Des tests d'écriture ... J'ai toujours besoin de plus de tests ...
Aidez-moi à rédiger la prise en charge du protocole HPACK / HTTP2.
Aidez-moi à concevoir / écrire une bibliothèque générique de routage HTTP pour la structure http_s .
Si vous souhaitez m'aider à écrire une nouvelle bibliothèque SSL / TLS ou à avoir une solution SSL / TLS, nous pouvons nous adapter à facil (en tant que code source) ... Remarque: Les solutions SSL / TLS devraient s'adapter aux modes clients et serveur.
Si vous voulez aider à promouvoir la bibliothèque, ce serait également formidable. Peut-être publier des repères ou partager votre histoire.
La rédaction de la documentation sur le site Web facil.io serait formidable. Je garde la documentation du code source assez mise à jour, mais la documentation doit être copiée dans le dossier docs pour faire fonctionner le site Web de la documentation.