Ujawnienie: Jestem autorem Faye.
- Jeśli chodzi o Faye, wszystko, co powiedziałeś, jest prawdą.
- Faye wdraża większość Bayeux, jedyne, czego brakuje teraz to kanały serwisowe, których jeszcze nie przekonałem o przydatności. W szczególności Faye ma być kompatybilny z implementacją referencyjną CometD dla Bayeux, która ma duże znaczenie dla następujących elementów.
- Koncepcyjnie, tak: Faye może użyć Socket.IO. W praktyce istnieją pewne bariery:
- Nie mam pojęcia, jaki rodzaj wsparcia po stronie serwera.IO wymaga, a wymóg, aby klient Faye (są klienci po stronie serwera w Node i Ruby, pamiętajcie) móc rozmawiać z dowolnym serwerem Bayeux (a serwerem Faye do dowolnego klienta Bayeux) może być deal-breaker.
- Bayeux ma określone wymagania, które serwery i klienci obsługują określone typy transportu, i mówi, jak wynegocjować, którego użyć. Określa również, w jaki sposób są one używane, na przykład, w jaki sposób typ zawartości żądania XHR wpływa na sposób interpretowania jego treści.
- W przypadku niektórych rodzajów obsługi błędów potrzebuję bezpośredniego dostępu do transportu, na przykład resending messages when a client reconnects after a Node WebSocket dies.
- Proszę, popraw mnie, jeśli coś jest nie tak - jest to oparte na pobieżnym skanie dokumentacji Socket.IO.
- Faye jest tylko pub/sub, to jest po prostu opiera się na nieco bardziej skomplikowanym protokołem i ma dużo subtelności zbudowanych w:
- server- i po stronie klienta rozszerzeń
- Wildcard wzór dopasowywania na trasach kanałowych
- Automatyczne ponowne połączenie, np. kiedy WebSockets umrzeć lub serwer rozłącza
- Klient działa we wszystkich przeglądarkach, na telefonach i server-side na węźle i Ruby
Faye prawdopodobnie wygląda o wiele bardziej skomplikowane w porównaniu do Juggernaut ponieważ Juggernaut deleguje więcej, np deleguje negocjacje dotyczące transportu na Socket.IO i przekazywanie wiadomości do Redis. Są to zarówno dobre decyzje, ale moja decyzja o użyciu Bayeux oznacza, że muszę sam wykonać więcej pracy.
Co do filozofii projektowania, nadrzędnym celem Faye jest to, aby działał wszędzie tam, gdzie jest dostępna sieć i powinien być absolutnie banalny, aby zacząć działać. Zwykle nie jest to łatwe, ale jego rozciągliwość oznacza, że można go dostosowywać w dość potężny sposób, na przykład można go przekształcić w usługę push do serwera (tj. Zatrzymanie dowolnych klientów) poprzez dodanie rozszerzeń uwierzytelniania .
Trwają również prace nad zwiększeniem elastyczności po stronie serwera. Zastanawiam się nad dodaniem obsługi klastrów i włączeniem głównego silnika pub-sub, aby można było używać Faye jako bezstanowego interfejsu sieciowego dla innego systemu sub-pub, takiego jak Redis lub AMQP.
Mam nadzieję, że było to pomocne.
Na wszelki wypadek Juggernaut został przestarzały! Przeczytaj, dlaczego http://blog.alexmaccaw.com/killing-a-brary. – Maziyar
HTML 5 Wysłane przez serwer wydarzenia wydają się być zalecaną alternatywą, zgodnie z autorem Juggernaut. – Harindaka