情報開示:私はフェイの作者です。
- フェイに関しては、あなたが言ったことはすべて真実です。
- Fayeはほとんどのバイユーを実装していますが、現時点で欠けているのはサービスチャネルだけですが、その有用性についてはまだ確信がありません。特に、Fayeは、以下に大きな影響を与えるバイユーのCometDリファレンス実装と互換性があるように設計されています。
- 概念的には、はい:Faye は Socket.IOを使用できます。実際には、これにはいくつかの障壁があります。
- 私はSocket.IOがどのようなサーバー側サポートを必要とするか、またFayeクライアント(NodeとRubyにはサーバー側クライアントがあることを覚えておいてください)が任意のBayeuxサーバー(およびFaye)と通信できるという要件を知りません任意のバイユークライアントへのサーバー)は、取引ブレーカーになる可能性があります。
- バイユーには、サーバーとクライアントが特定のトランスポートタイプをサポートするという特定の要件があり、どのトランスポートタイプをネゴシエートするかについて述べています。また、XHRリクエストのContent-Typeがコンテンツの解釈にどのように影響するかなど、それらの使用方法も指定します。
- 一部のタイプのエラー処理では、トランスポートに直接アクセスする必要があります。たとえば、ノードWebSocketの停止後にクライアントが再接続したときにメッセージを再送信します。
- これが間違っている場合は修正してください-これはSocket.IOのドキュメントの大まかなスキャンに基づいています。
- Fayeはただのpub / subであり、少し複雑なプロトコルに基づいており、多くの機能が組み込まれています。
- サーバー側とクライアント側の拡張機能
- チャネルルートでのワイルドカードパターンマッチング
- 自動再接続、たとえばWebSocketが停止したとき、またはサーバーがオフラインになったとき
- クライアントは、すべてのブラウザー、電話、およびノードとRubyのサーバー側で動作します
Fayeは、Juggernautに比べてはるかに複雑に見えます。Juggernautがさらに委譲するためです。たとえば、転送ネゴシエーションをSocket.IOに委任し、メッセージルーティングをRedisに委任します。これらはどちらもすばらしい決断ですが、バイユーを使用するという私の決断は、自分でもっと仕事をしなければならないことを意味します。
設計哲学に関しては、Fayeの最優先目標は、Webが利用可能なすべての場所で機能することであり、それを実現するために絶対に取るに足らないことです。私は始めるのは本当に簡単ではありませんが、その拡張性は、それを非常に強力な方法でカスタマイズできることを意味します。たとえば、認証拡張機能を追加することで、サーバーからクライアントへのプッシュサービスに変換できます(つまり、プッシュする任意のクライアントを停止できます)。 。
サーバー側でより柔軟にするための作業も進行中です。クラスタリングのサポートを追加し、コアpub-subエンジンをプラグイン可能にして、FayeをRedisやAMQPなどの別のpub-subシステムのステートレスWebフロントエンドとして使用できるようにすることを検討しています。
これがお役に立てば幸いです。