HACIL.IO هو C Micro-Framework لتطبيقات الويب. يشمل Hacil.io:
يوفر Hagil.io خدمات شبكة TCP / IP عالية الأداء إلى Linux / BSD (و MACOS) باستخدام تصميم مصقول (بالإضافة إلى تجمع مؤشرات الترابط ودعم التقدم) ويوفر حلًا سهلاً لمشكلة C10K.
يمكنك قراءة المزيد حول موقع Hagil.io على موقع Hacil.io.
الفرع الرئيسي على ريبو git هو فرع التنمية ومن المحتمل أن يتم كسره في أي وقت معين (خاصة عند العمل على المراجعات الرئيسية ، كما أنا في الوقت الحالي).
يرجى تحديد إصدار إصدار لأي احتياجات إنتاج.
facil.io اليود ، يتم تشغيل خادم تطبيق Ruby HTTP/WebSockets Ruby بواسطة 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 لبدء مشروع جديد باستخدام Framework 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 Disassembler و START Development.
الائتمان إلى benjcal لاقتراح البرنامج النصي.
إشعار: الفرع الرئيسي هو فرع التنمية. يرجى تحديد أحدث علامة إصدار لأحدث إصدار إصدار مستقر.
Hagil.io هي مكتبة شفرة مصدر ، لذلك من السهل نسخ الكود المصدري في مشروع موجود وابدأ في استخدام المكتبة على الفور.
سيقوم أمر make libdump بتفريغ جميع الملفات ذات الصلة في مجلد واحد يسمى libdump ، ويمكنك نسخها جميعًا أو تقسيمها إلى ملفات مصدر الرأس والرأس.
من الممكن أيضًا تجميع مكتبة Hacil.io بشكل منفصل باستخدام أمر make lib .
facil.io كوحدة فرعية cmake يدعم Hacil.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 مع ميسونHagil.io متاح في Meson Wrap DB.
أولاً ، قم بتثبيت ملف التفاف:
meson wrap install facil
ثم أضف السطر التالي إلى meson.build لمشروعك:
facil_dep = subproject('facil').get_variable('facil_dep')
يتضمن مجلد الأمثلة أمثلة على بروتوكول Telnet Echo ، وهو خادم Hello World بسيط ، مثال على WebSocket Pub/Sub مع redis (اختياري) ، إلخ.
يمكنك العثور على مزيد من المعلومات على موقع Hacil.io
يمكن العثور على دليل المساهمة هنا.
بالتأكيد ، لماذا لا. إذا تمكنت من إضافة دعم Solaris أو Windows إلى evio و sock ، فقد يعني ذلك أن يكون facil متاحًا للاستخدام على هذه المنصات أيضًا.
إذا واجهت أي مشكلات ، افتح مشكلة (أو أفضل ، طلب سحب مع إصلاح) - سيكون ذلك رائعًا :-)
ضربني إذا كنت تريد:
اكتب الاختبارات ... أحتاج دائمًا إلى المزيد من الاختبارات ...
ساعدني في كتابة دعم بروتوكول HPACK / HTTP2.
ساعدني في تصميم / كتابة مكتبة HTTP Trough Helper عامة لهيكل http_s .
إذا كنت ترغب في مساعدتي في كتابة مكتبة SSL/TLS جديدة أو لديك حل SSL/TLS ، فيمكننا أن نناسبها في facil (كرمز مصدر) ... ملاحظة: يجب أن تتناسب حلول SSL/TLS على أوضاع العميل والخادم.
إذا كنت ترغب في المساعدة في الترويج للمكتبة ، فسيكون ذلك رائعًا أيضًا. ربما نشر المعايير أو شارك قصتك.
ستكون كتابة الوثائق في موقع facil.io رائعًا. أحتفظ بوثائق الكود المصدري إلى حد ما ، ولكن يجب نسخ الوثائق إلى مجلد docs للحصول على موقع ويب الوثائق.