Раскрытие информации: Я являюсь автором Faye.
- Что касается Фэй, все, что вы сказали, верно.
- Faye реализует большую часть Bayeux, единственное, чего не хватает прямо сейчас, это каналы обслуживания, которые я еще не убежден в полезности. В частности, Faye разработан для совместимости с эталонной реализацией CometD Bayeux, которая имеет большое значение для следующего.
- Концептуально, да: Faye можно использовать Socket.IO. На практике есть некоторые препятствия для этого:
- Я понятия не имею, какая поддержка на стороне сервера Socket.IO требует, и требование, чтобы клиент Faye (есть серверные клиенты в узле и Ruby, помните) мог разговаривать с любым сервером Bayeux (и сервером Faye любому клиенту Bayeux), может быть разблокирован.
- У Bayeux есть особые требования к тому, что серверы и клиенты поддерживают определенные типы транспорта и говорят, как вести переговоры о том, какой из них использовать. Он также указывает, как они используются, например, как Content-Type XHR-запроса влияет на то, как его контент интерпретируется.
- Для некоторых типов обработки ошибок мне нужен прямой доступ к транспорту, например resending messages when a client reconnects after a Node WebSocket dies.
- Пожалуйста, исправьте меня, если у меня есть что-то неправильное - это основано на поверхностном просмотре документации Socket.IO.
- Фей только паб/к югу, он просто основан на несколько более сложный протокол и имеют много тонкостей, построенные в:
- Сервер- и клиентские расширениях
- Wildcard соответствия шаблону на маршрутах каналов
- Автоматическое повторное подключение, например когда WebSockets умирают или сервер переходит в автономный режим
- Клиент работает во всех браузерах, на телефонах, и на стороне сервера на узле и рубин
Фей, вероятно, выглядит намного более сложным по сравнению с Джаггернаут, потому что Джаггернаут делегатов больше, например он делегирует транспортные переговоры в Socket.IO и маршрутизацию сообщений в Redis. Это прекрасные решения, но мое решение использовать Bayeux означает, что мне нужно больше работать самостоятельно.
Что касается философии дизайна, то главной задачей Faye является то, что она должна работать повсюду в Интернете, и она должна быть абсолютно тривиальной, чтобы идти. Мне очень легко начать работу, но его расширяемость означает, что он может быть настроен довольно мощными способами, например, вы можете превратить его в службу push-client от сервера к клиенту (то есть остановить произвольные клиенты, нажав на нее), добавив расширения для аутентификации ,
Существует также работа, которая делает ее более гибкой на стороне сервера. Я смотрю на добавление поддержки кластеризации и делает основной модуль sub-sub подключаемым, чтобы вы могли использовать Faye в качестве автономного веб-интерфейса для другой паб-подсистемы, такой как Redis или AMQP.
Надеюсь, это было полезно.
На всякий случай, Джаггернаут устарел! Читайте, почему http://blog.alexmaccaw.com/killing-a-library. – Maziyar
HTML 5 Событие, отправленное сервером, похоже, является рекомендуемой альтернативой в соответствии с автором Juggernaut. – Harindaka