facil.io adalah kerangka mikro C untuk aplikasi web. facil.io termasuk:
FACIL.IO menyediakan layanan jaringan TCP / IP berkinerja tinggi ke Linux / BSD (dan MacOS) dengan menggunakan desain acara (serta kumpulan utas dan dukungan forking) dan memberikan solusi mudah untuk masalah C10K.
Anda dapat membaca lebih lanjut tentang facil.io di situs web facil.io.
Cabang utama pada repo git adalah cabang pengembangan dan kemungkinan akan dipecah pada waktu tertentu (terutama ketika mengerjakan revisi besar, seperti saya saat ini).
Pilih versi rilis untuk kebutuhan produksi apa pun.
facil.io Iodine, server aplikasi ruby ruby http/websockets ditenagai oleh facil.io - jadi semua orang yang menggunakan server yodium sedang berjalan di facil.io.
Apakah Anda menggunakan facil.io ? Beri tahu saya!
#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 di proyek Anda Dimungkinkan untuk memulai proyek baru dengan facil.io atau cukup menambahkannya ke yang sudah ada. GNU make adalah sistem build default dan CMake juga didukung.
facil.io harus kompatibel C99.
facil.io Untuk memulai proyek baru menggunakan facil.io Framework, jalankan perintah berikut di terminal (Ubah appname ke apa pun yang Anda inginkan):
$ bash <(curl -s https://raw.githubusercontent.com/boazsegev/facil.io/master/scripts/new/app) appname
Anda dapat meninjau skrip di sini. Singkatnya, ini akan membuat folder baru, unduh salinan cabang yang stabil, tambahkan beberapa kode pelat boiler demo dan jalankan make clean (yang diperlukan untuk membangun struktur folder tmp ).
Selanjutnya, edit makefile untuk menghapus fitur generik yang tidak Anda butuhkan, seperti fitur DUMP_LIB , bendera DEBUG atau DISAMS disassembler dan mulai pengembangan.
Kredit ke @BenjCal karena menyarankan skrip.
PEMBERITAHUAN: Cabang utama adalah cabang pengembangan. Pilih tag rilis terbaru untuk versi rilis stabil terbaru.
facil.io adalah pustaka kode sumber, jadi mudah untuk menyalin kode sumber ke proyek yang ada dan mulai menggunakan perpustakaan segera.
Perintah make libdump akan membuang semua file yang relevan dalam satu folder yang disebut libdump , dan Anda dapat menyalin semuanya atau membaginya menjadi file header ands sumber.
Dimungkinkan juga untuk mengkompilasi pustaka facil.io secara terpisah menggunakan perintah make lib .
facil.io sebagai submodule cmake facil.io juga mendukung submodul git dan cmake. Kredit untuk @owendelahoy (PR#8).
Pertama, tambahkan repositori sebagai submodule menggunakan git :
git submodule add https://github.com/boazsegev/facil.io.git
Kemudian tambahkan baris berikut CMakeLists.txt proyek
add_subdirectory(facil.io)
facil.io dengan mesonfacil.io tersedia di meson wrap db.
Pertama, instal file Wrap:
meson wrap install facil
Kemudian tambahkan baris berikut ke meson.build proyek Anda. Build:
facil_dep = subproject('facil').get_variable('facil_dep')
Folder contoh termasuk contoh kode untuk protokol telnet echo, server Hello World sederhana, contoh untuk pub Websocket/sub dengan redis (opsional), dll '.
Anda dapat menemukan informasi lebih lanjut di situs web facil.io
Panduan kontribusi dapat ditemukan di sini.
Tentu, kenapa tidak. Jika Anda dapat menambahkan dukungan Solaris atau Windows ke evio dan sock , itu bisa berarti facil akan tersedia untuk digunakan di platform ini juga.
Jika Anda menghadapi masalah apa pun, buka masalah (atau, bahkan lebih baik, permintaan tarik dengan perbaikan) - itu akan sangat bagus :-)
Pukul aku jika kamu mau:
Menulis tes ... Saya selalu membutuhkan lebih banyak tes ...
Bantu saya menulis dukungan protokol HPACK / HTTP2.
Bantu saya merancang / menulis perpustakaan pembantu http routing generik untuk http_s struct.
Jika Anda ingin membantu saya menulis pustaka SSL/TLS baru atau memiliki solusi SSL/TLS, kami dapat masuk ke dalam facil (sebagai kode sumber) ... Catatan: Solusi SSL/TLS harus sesuai dengan mode klien dan server.
Jika Anda ingin membantu mempromosikan perpustakaan, itu juga akan bagus. Mungkin menerbitkan tolok ukur atau berbagi cerita Anda.
Menulis dokumentasi ke situs web facil.io akan sangat bagus. Saya menjaga dokumentasi kode sumber diperbarui secara adil, tetapi dokumentasi harus disalin ke folder docs untuk menjalankan dan menjalankan situs web dokumentasi.