Раскрытие информации: я автор Faye.
- Что касается Faye, все, что вы сказали, правда.
- Faye реализует большую часть Bayeux,единственное, чего сейчас не хватает, - это служебных каналов, в которых я еще не убедился в полезности.В частности, Faye спроектирован так, чтобы быть совместимым с эталонной реализацией CometD Байе, которая имеет большое значение для следующего:
- Концептуально, да: Faye может использовать Socket.IO.На практике существуют некоторые препятствия для этого:
- Я понятия не имею, какая требуется поддержка Socket.IO на стороне сервера, и требование, чтобы клиент Faye (в Node есть серверные клиенты иRuby, помните) возможность общаться с любым сервером Bayeux (и сервером Faye с любым клиентом Bayeux) может нарушить условия сделки.
- Bayeux предъявляет особые требования к серверам и клиентам, поддерживающим определенные типы транспорта, и говорит, какдоговориться, какой использовать.Он также определяет, как они используются, например, как Content-Type запроса XHR влияет на интерпретацию его содержимого.
- Для некоторых типов обработки ошибок мне необходим прямой доступ к транспорту, например повторная отправка сообщений, когда клиент повторно подключается после того, как WebSocket узла умирает .
- Пожалуйста, исправьте меня, если я что-то неправильно понял - это основано на кратком сканировании документации Socket.IO.
- Faye - просто pub / sub, он просто основан на немного более сложном протоколе и имеет множество встроенных функций:
- Серверные и клиентские расширения
- Подстановочный шаблон сопоставления на маршрутах канала
- Автоматическое переподключение, например, когда WebSockets умирает или сервер отключается
- Клиент работает во всех браузерах, на телефонах и на стороне серверана Node и Ruby
Фэй, вероятно, выглядит намного сложнее, чем Джагернаут, потому что Джаггернаут делегирует больше, например, делегирует транссогласование портов для Socket.IO и маршрутизация сообщений в Redis.Это оба правильные решения, но мое решение использовать Bayeux означает, что я должен сам выполнять больше работы.
Что касается философии дизайна, главная цель Фэй состоит в том, чтобы она работала везде, где есть сеть, и должна быть абсолютно тривиальнойчтобы начать с.Начать действительно просто, но его расширяемость означает, что он может быть настроен довольно мощными способами, например, вы можете превратить его в push-сервис от сервера к клиенту (то есть остановить произвольную передачу клиентов на него), добавив расширения аутентификации..
Также ведется работа по повышению его гибкости на стороне сервера.Я смотрю на добавление поддержки кластеризации и на то, чтобы сделать основной модуль pub-sub подключаемым, чтобы вы могли использовать Faye в качестве веб-интерфейса без сохранения состояния для другой системы pub-sub, такой как Redis или AMQP.
Надеюсь, этополезно.