Фэй против Socket.IO (и Джаггернаут)



гнездо.ИО по-видимому, наиболее популярных и активных библиотеки эмуляции вебсокетов. Джаггернаут использует его для создания полной системы pub / sub.



Фэй также популярен и активен, и имеет свою собственную библиотеку javascript, что делает его полную функциональность сопоставимой с Juggernaut. Джаггернаут использует узел на своем сервере, и Фэй можете использовать любой узел или стойку. Джаггернаут использует Redis для хранения (устранение: он использует Redis для для pub / sub), и Фэй только сохраняет состояние в памяти.




  1. все выше точность?

  2. Фэй говорит, что он реализует Байе -- Я думаю, что Juggernaut не делает этого -- это потому, что Juggernaut является более низким уровнем (т. е. я могу реализовать Bayeux с помощью Juggernaut)

  3. может ли Фэй переключиться на использование Socket.IO библиотека javascript браузера, если она хочет? Или их библиотеки javascript делают принципиально разные вещи?

  4. есть есть ли другие архитектурные/дизайнерские / философские различия между проектами?

468   3  

3 ответов:

раскрытие: я являюсь автором Фэй.

  1. Что касается Фэй, все, что вы сказали, правда.
  2. Faye реализует большую часть Байе, единственное, чего не хватает сейчас, это каналы обслуживания, которые я еще не убедился в полезности. В частности, Faye предназначен для совместимости с эталонной реализацией Cometd Bayeux, которая имеет большое значение для следующего.
  3. концептуально, да: Faye может использование Socket.IO на практике существуют некоторые препятствия для этого:
    • Я понятия не имею, какая поддержка на стороне сервера Socket.IO требуется, и требование, чтобы клиент Faye (есть серверные клиенты в Node и Ruby, помните) мог разговаривать с любым сервером Bayeux (и сервер Faye с любым клиентом Bayeux), может быть deal-breaker.
    • Байе имеет определенные требования, что серверы и клиенты поддерживают определенные типы транспорта, и говорит, как договориться, какой из них использовать. Он также определяет, как они используются, например, как тип содержимого запроса XHR влияет на то, как его содержимое интерпретируется.
    • для некоторых типов обработка ошибок мне нужен прямой доступ к транспорту, например повторная отправка сообщений при повторном подключении клиента после смерти узла WebSocket.
    • пожалуйста, поправьте меня, если у меня есть что - то из этого неправильно- это основано на беглом сканировании Socket.IO документация.
  4. Фэй просто pub / sub, он просто основан на немного более сложном протоколе и имеет много тонкостей, встроенных:
    • серверные и клиентские расширения
    • сопоставление шаблонов подстановочных знаков на маршрутах каналов
    • автоматическое переподключение, например, когда WebSockets умирают или сервер переходит в автономный режим
    • клиент работает во всех браузерах, на телефонах и на стороне сервера на узле и Ruby

Фэй, вероятно, выглядит намного сложнее по сравнению с Джаггернаут, потому что Джаггернаут делегирует больше, например, он делегирует транспортные переговоры Socket.IO и маршрутизация сообщений в Redis. Это прекрасные решения, но мое решение использовать Байе означает, что я должен сделать больше работы сам.

Что касается философии дизайна, главная цель Фэй заключается в том, что она должна работать везде, где доступна сеть, и должна быть абсолютно тривиальной, чтобы начать работать. Я очень просто начать работу, но его расширяемость означает, что он может быть настроен в довольно мощные способы, например, вы можете превратить его в службу push от сервера к клиенту (т. е. остановить произвольные клиенты, толкающие к нему), добавив расширения аутентификации.

там также ведется работа, чтобы сделать его более гибким на стороне сервера. Я смотрю на добавление поддержки кластеризации и делаю ядро pub-sub engine подключаемым, чтобы вы могли использовать Faye в качестве веб-интерфейса без состояния для другой системы pub-sub, такой как Redis или AMQP.

Я надеюсь, это было полезно.

  1. AFAIK, да, помимо того, что Juggernaut использует только Redis для Pubsub, а не настойчивость. Также означает, что клиентские библиотеки на большинстве языков уже написаны (так как ему просто нужен адаптер Redis).
  2. Juggernaut не реализует Байе, а скорее имеет очень простой пользовательский протокол JSON
  3. Не знаю, наверное
  4. Джаггернаут очень прост, и разработан, чтобы быть таким образом. Хотя я не использовал Faye, из документов похоже, что у него много больше возможностей, чем просто опционально. Будучи построен на вершине Socket.IO имеет свои преимущества тоже, Джаггернаут поддерживается практически в каждом браузере, как настольных, так и мобильных.

мне будет очень интересно, что скажет автор Фэй. Как я уже сказал, Я не использовал его, и было бы здорово узнать, как он сравнивается с Джаггернаутом. Это, вероятно, случай использования лучшего инструмента для работы. Если вам нужен pubsub, Juggernaut делает это очень хорошо.

Фэй, конечно, может. Еще один пример подобного проекта сверху Socket.IO:

https://github.com/aaronblohowiak/Push-It

Comments

    Ничего не найдено.