FACIL.IO เป็นรูปแบบไมโครไมโครสำหรับเว็บแอปพลิเคชัน facil.io รวมถึง:
FACIL.IO ให้บริการ TCP / IP Network ที่มีประสิทธิภาพสูงแก่ Linux / BSD (และ MacOS) โดยใช้การออกแบบที่มีเหตุการณ์ (รวมถึงพูลเธรดและการสนับสนุนการฟอร์ก) และให้ทางออกที่ง่ายสำหรับปัญหา C10K
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ facil.io บนเว็บไซต์ facil.io
สาขาหลักของ git Repo เป็นสาขาการพัฒนาและมีแนวโน้มที่จะถูกทำลายในเวลาใดก็ตาม (โดยเฉพาะอย่างยิ่งเมื่อทำงานเกี่ยวกับการแก้ไขครั้งใหญ่ตามที่ฉันอยู่ในขณะนี้)
โปรดเลือกเวอร์ชันรุ่นสำหรับความต้องการการผลิตใด ๆ
facil.io ไอโอดีน, 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 disassembler และเริ่มการพัฒนา
เครดิตไปที่ @BenjCal เพื่อแนะนำสคริปต์
ข้อสังเกต: สาขา หลัก คือสาขาการพัฒนา โปรดเลือกแท็กรุ่นล่าสุดสำหรับเวอร์ชันรุ่นที่เสถียรล่าสุด
facil.io เป็นไลบรารีซอร์สโค้ดดังนั้นจึงเป็นเรื่องง่ายที่จะคัดลอกซอร์สโค้ดลงในโครงการที่มีอยู่และเริ่มใช้ไลบรารีทันที
คำสั่ง make libdump จะทิ้งไฟล์ที่เกี่ยวข้องทั้งหมดในโฟลเดอร์เดียวที่เรียกว่า libdump และคุณสามารถคัดลอกไฟล์ทั้งหมดหรือแบ่งออกเป็นไฟล์ส่วนหัวและไฟล์ต้นฉบับ
นอกจากนี้ยังเป็นไปได้ที่จะรวบรวมไลบรารี facil.io แยกกันโดยใช้คำสั่ง make lib
facil.io เป็น submodule cmake facil.io ยังรองรับทั้ง submodules git และ cmake เครดิตถึง @owendelahoy (PR#8)
ก่อนอื่นให้เพิ่มที่เก็บเป็น submodule โดยใช้ git :
git submodule add https://github.com/boazsegev/facil.io.git
จากนั้นเพิ่มบรรทัดต่อไปนี้ CMakeLists.txt ของโครงการ txt
add_subdirectory(facil.io)
facil.io กับ mesonfacil.io มีให้ที่ Meson Wrap DB
ก่อนอื่นให้ติดตั้งไฟล์ WRAP:
meson wrap install facil
จากนั้นเพิ่มบรรทัดต่อไปนี้ไปยัง meson.build ของโครงการของคุณ:
facil_dep = subproject('facil').get_variable('facil_dep')
โฟลเดอร์ตัวอย่างรวมถึงตัวอย่างรหัสสำหรับโปรโตคอล Telnet Echo, Hello World Server ง่ายๆตัวอย่างสำหรับ WebSocket Pub/Sub พร้อม (เสริม) Redis ฯลฯ '
คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับเว็บไซต์ facil.io
คู่มือการบริจาคสามารถพบได้ที่นี่
แน่นอนว่าทำไมไม่ หากคุณสามารถเพิ่ม Solaris หรือ Windows รองรับ evio และ sock ได้นั่นอาจหมายถึงการอำนวย facil จะพร้อมใช้งานสำหรับใช้บนแพลตฟอร์มเหล่านี้เช่นกัน
หากคุณพบปัญหาใด ๆ ให้เปิดปัญหา (หรือดีกว่านั้นการร้องขอการดึงด้วยการแก้ไข) - นั่นจะดีมาก :-)
ตีฉันถ้าคุณต้องการ:
เขียนการทดสอบ ... ฉันต้องการการทดสอบเพิ่มเติมเสมอ ...
ช่วยฉันเขียนการสนับสนุนโปรโตคอล HPACK / HTTP2
ช่วยฉันออกแบบ / เขียนไลบรารีตัวช่วยการกำหนดเส้นทาง HTTP ทั่วไปสำหรับโครงสร้าง http_s
หากคุณต้องการช่วยฉันเขียนไลบรารี SSL/TLS ใหม่หรือมีโซลูชัน SSL/TLS เราสามารถใส่ลงใน facil (เป็นซอร์สโค้ด) ... หมายเหตุ: โซลูชัน SSL/TLS ควรพอดีทั้งโหมดไคลเอนต์และเซิร์ฟเวอร์
หากคุณต้องการช่วยโปรโมตห้องสมุดนั่นก็จะดีเช่นกัน อาจเผยแพร่เกณฑ์มาตรฐานหรือแบ่งปันเรื่องราวของคุณ
การเขียนเอกสารลงในเว็บไซต์ facil.io จะดีมาก ฉันเก็บเอกสารซอร์สโค้ดไว้ค่อนข้างอัปเดต แต่เอกสารควรคัดลอกไปยังโฟลเดอร์ docs เพื่อให้เว็บไซต์เอกสารและกำลังทำงานอยู่