Pengungkapan: Saya penulis Faye.
- Mengenai Faye, semua yang Anda katakan itu benar.
- Faye mengimplementasikan sebagian besar Bayeux, satu-satunya hal yang hilang saat ini adalah saluran layanan, yang belum saya yakini kegunaannya. Secara khusus Faye dirancang agar kompatibel dengan implementasi referensi CometD dari Bayeux, yang memiliki pengaruh besar pada hal berikut.
- Secara konseptual, ya: Faye bisa menggunakan Socket.IO. Dalam praktiknya, ada beberapa hambatan untuk ini:
- Saya tidak tahu apa jenis dukungan sisi server yang dibutuhkan Socket.IO, dan persyaratan bahwa klien Faye (ada klien sisi server di Node dan Ruby, ingat) dapat berbicara dengan server Bayeux mana pun (dan Faye server ke klien Bayeux mana pun) mungkin merupakan pemecah kesepakatan.
- Bayeux memiliki persyaratan khusus bahwa server dan klien mendukung jenis transportasi tertentu, dan menjelaskan cara menegosiasikan mana yang akan digunakan. Ini juga menentukan bagaimana mereka digunakan, misalnya bagaimana Content-Type dari permintaan XHR mempengaruhi bagaimana isinya diinterpretasikan.
- Untuk beberapa jenis penanganan kesalahan, saya memerlukan akses langsung ke pengangkutan, misalnya mengirim ulang pesan ketika klien tersambung kembali setelah Node WebSocket mati .
- Harap perbaiki saya jika saya melakukan kesalahan ini - ini didasarkan pada pemindaian sepintas dokumentasi Socket.IO.
- Faye hanyalah pub / sub, ini hanya didasarkan pada protokol yang sedikit lebih kompleks dan memiliki banyak kenyamanan:
- Ekstensi sisi server dan klien
- Pencocokan pola karakter pengganti pada rute saluran
- Sambungan ulang otomatis, misalnya saat WebSockets mati atau server offline
- Klien bekerja di semua browser, di ponsel, dan sisi server di Node dan Ruby
Faye mungkin terlihat jauh lebih kompleks dibandingkan dengan Juggernaut karena Juggernaut lebih banyak mendelegasikan, misalnya mendelegasikan negosiasi transportasi ke Socket.IO dan perutean pesan ke Redis. Ini adalah keputusan yang bagus, tetapi keputusan saya untuk menggunakan Bayeux berarti saya harus melakukan lebih banyak pekerjaan sendiri.
Adapun filosofi desain, tujuan utama Faye adalah bahwa ia harus bekerja di mana pun Web tersedia dan harus benar-benar sepele untuk digunakan. Ini sangat sederhana untuk memulai tetapi ekstensibilitasnya berarti dapat disesuaikan dengan cara yang cukup kuat, misalnya Anda dapat mengubahnya menjadi layanan push server-ke-klien (yaitu menghentikan klien yang sewenang-wenang mendorongnya) dengan menambahkan ekstensi otentikasi .
Ada juga pekerjaan yang sedang dilakukan untuk membuatnya lebih fleksibel di sisi server. Saya ingin menambahkan dukungan pengelompokan, dan membuat mesin inti pub-sub dapat dicolokkan sehingga Anda dapat menggunakan Faye sebagai antarmuka web tanpa negara untuk sistem pub-sub lain seperti Redis atau AMQP.
Saya harap ini membantu.