การเปิดเผยข้อมูล: ฉันเป็นคนเขียนเฟย์
- เกี่ยวกับเฟย์ทุกสิ่งที่คุณพูดเป็นความจริง
- Faye ใช้ Bayeux ส่วนใหญ่สิ่งเดียวที่ขาดหายไปในตอนนี้คือช่องทางการให้บริการซึ่งฉันยังไม่มั่นใจในประโยชน์ของมัน โดยเฉพาะอย่างยิ่ง Faye ได้รับการออกแบบมาเพื่อให้เข้ากันได้กับการใช้งานอ้างอิง CometD ของ Bayeux ซึ่งมีแบริ่งขนาดใหญ่ดังต่อไปนี้
- ตามแนวคิดใช่: Faye สามารถใช้ Socket.IO ในทางปฏิบัติมีอุปสรรคบางประการดังนี้:
- ฉันไม่รู้ว่า Socket.IO สนับสนุนฝั่งเซิร์ฟเวอร์ต้องการแบบใดและข้อกำหนดที่ไคลเอนต์ Faye (มีไคลเอนต์ฝั่งเซิร์ฟเวอร์ใน Node และ Ruby จำไว้) สามารถพูดคุยกับเซิร์ฟเวอร์ Bayeux ใด ๆ (และ Faye เซิร์ฟเวอร์ไปยังไคลเอนต์ Bayeux) อาจเป็นตัวทำลายข้อตกลง
- Bayeux มีข้อกำหนดเฉพาะที่เซิร์ฟเวอร์และไคลเอนต์รองรับการขนส่งบางประเภทและบอกวิธีเจรจาว่าจะใช้แบบใด นอกจากนี้ยังระบุวิธีการใช้งานตัวอย่างเช่นวิธีการที่ประเภทเนื้อหาของคำขอ XHR มีผลต่อวิธีการตีความเนื้อหา
- สำหรับบางประเภทของการจัดการข้อผิดพลาดที่ฉันต้องการเข้าถึงโดยตรงไปยังการขนส่งเช่นresending ข้อความเมื่อ reconnects ลูกค้าหลังจากการตายโหนด
- โปรดแก้ไขฉันหากฉันมีข้อผิดพลาดใด ๆ - นี่เป็นไปตามการสแกนคร่าวๆของเอกสาร Socket.IO
- Faye เป็นเพียง pub / sub มันขึ้นอยู่กับโปรโตคอลที่ซับซ้อนกว่าเล็กน้อยและมีสิ่งแปลกใหม่มากมายในตัว:
- ส่วนขยายฝั่งเซิร์ฟเวอร์และไคลเอนต์
- การจับคู่รูปแบบสัญลักษณ์แทนบนเส้นทางช่อง
- การเชื่อมต่อใหม่โดยอัตโนมัติเช่นเมื่อ WebSockets ตายหรือเซิร์ฟเวอร์ออฟไลน์
- ไคลเอนต์ทำงานได้ในทุกเบราว์เซอร์บนโทรศัพท์และฝั่งเซิร์ฟเวอร์บน Node และ Ruby
Faye อาจดูซับซ้อนกว่ามากเมื่อเทียบกับ Juggernaut เนื่องจาก Juggernaut มอบหมายมากกว่าเช่นมอบหมายการเจรจาการขนส่งไปยัง Socket.IO และการกำหนดเส้นทางข้อความไปยัง Redis นี่เป็นการตัดสินใจที่ดีทั้งคู่ แต่การตัดสินใจใช้ Bayeux หมายความว่าฉันต้องทำงานมากขึ้นด้วยตัวเอง
สำหรับปรัชญาการออกแบบเป้าหมายที่เหนือกว่าของ Faye คือควรใช้งานได้ทุกที่ที่มีเว็บให้บริการและควรเป็นเรื่องเล็กน้อยที่จะดำเนินการต่อไป ฉันไม่ง่ายเลยที่จะเริ่มต้น แต่ความสามารถในการขยายหมายความว่าสามารถปรับแต่งได้ในรูปแบบที่มีประสิทธิภาพมากเช่นคุณสามารถเปลี่ยนเป็นบริการพุชเซิร์ฟเวอร์ไปยังไคลเอนต์ (เช่นหยุดไคลเอนต์โดยพลการผลักดันไปที่มัน) โดยการเพิ่มส่วนขยายการตรวจสอบสิทธิ์ .
นอกจากนี้ยังมีการดำเนินการเพื่อให้มีความยืดหยุ่นมากขึ้นในฝั่งเซิร์ฟเวอร์ ฉันกำลังมองหาการเพิ่มการรองรับการทำคลัสเตอร์และทำให้เอ็นจิ้นหลักของ pub-sub สามารถเสียบได้เพื่อให้คุณสามารถใช้ Faye เป็นส่วนหน้าเว็บแบบไร้สถานะสำหรับระบบย่อยอื่น ๆ เช่น Redis หรือ AMQP
ฉันหวังว่านี่จะเป็นประโยชน์