приложение чата: pubsubhubbub vs xmpp

Я не уверен в лучшем стеке для создания приложения для чата. Сейчас я думаю о двух основных вариантах:

  • facebook tornado
    • cons: does not use the main chat protocol xmpp but pubsubhubbub
    • плюсы: мне очень нравится его простота в разработке (веб-сервер + веб-фреймворк); pubsubhubbub также кажется более простым протоколом, чем xmpp; и я знаю питон
  • xmpp + bosch, punjab, ejabberd
    • cons: don't know erlang; overall seems a bit harder to develop
    • плюсы: использует протокол xmpp

В приложении чата должно быть следующее:

  • Приватные сообщения
  • Общественные комнаты
  • Частные комнаты
  • История чата для комнат (не навсегда, только последние n сообщений)
  • HTML-встраивание
  • URL в чат-комнату

Оба варианта кажутся масштабируемыми, так что меня это не особо беспокоит (мы думаем также запустить приложение в ec2 от Amazon). Я знаю, что есть проект, который создает сервер xmpp с использованием торнадо, но он не готов к использованию в производственной среде, и наши сроки не так уж велики. По сути, меня больше всего беспокоит простота разработки и я как-то сожалею об использовании pubsubhubbub для разработки чат-приложения, но я где-то читал, что PubSubHubbub может в конечном итоге заменить XMPP, поскольку REST заменил SOAP - так что вы думаете?


person scc    schedule 18.03.2010    source источник
comment
Обратите внимание, что PubSubHubbub (PuSH) даже близко не похож на XMPP. PuSH - это очень простой протокол публикации-подписки, очень похожий на обратный вызов для аутентификации. . XMPP - это гораздо больше, поэтому он не поместился бы в этом поле для комментариев.   -  person Zash    schedule 09.10.2011


Ответы (5)


Перейдите на XMPP.

По умолчанию ejabberd поддерживает все ваши требования. Вам не нужно будет видеть какой-либо erlang и писать собственные модули для ejabberd. А со Strophejs отлично подходит XMPP в браузере (что вы, по-видимому, и делаете).

Что касается вашего последнего вопроса о замене XMPP pubsubhubbub, не рассчитывайте на это. XMPP - это более 10 лет, надежная реализация с открытым исходным кодом и проприетарная совместимость как на клиенте, так и на сервере, элегантная, поэтому никуда не денется.

И вы разрабатываете приложение для чата, для чего и был создан XMPP.

person Eric    schedule 18.03.2010
comment
Strophe выглядит неплохо (его тоже использует Aristochat). Спасибо :) - person scc; 18.03.2010

Facebook Tornao вообще не использует PubSubHubbub!

Выбирайте XMPP, он разработан для того, что вы ищете. Tornado не предназначен специально для этого, а в целом предназначен для длительных запросов на опрос.

Нет необходимости использовать Punjab, модуль http-bind ejabbed теперь неплохо справляется. Кроме того, вам не нужно изучать Erlang, так же как вам не нужно изучать C при написании веб-приложения, использующего Apache :) Проверьте такие вещи, как Aristochat. Единственное, с чем вам нужно поиграть, это конфигурация вашего XMPP-сервера и чатов, а затем Javascript для клиентской стороны (в браузере).

person Julien Genestoux    schedule 18.03.2010
comment
Спасибо. Аристохат выглядит многообещающим. Тем временем также был обнаружен Speeqe (code.stanziq.com/speeqe). Я проверю их обоих. Согласно этому readwriteweb.com/archives/ торнадо использует pubsubhubbub. - person scc; 18.03.2010

Если вам не нужна федерация через XMPP, но вы хотите быстро создать прототип и развернуть вместе с масштабируемостью из коробки, взгляните на пример веб-фреймворка Lift чат-сервер на одной странице кода.

person Joseph Boyle    schedule 19.07.2010

PubSubHubbub (PuSH) никогда не предназначался для приложений чата. Иногда его называют «IM для Интернета». Я предлагаю вам просмотреть этот слайд: Realtime Ruby для реального времени Интернет от игригорика

На самом деле вопрос в том, насколько вы хотите получить реальное время? Если вам нужна скорость, тогда XMPP - лучший вариант (500 мс), в то время как PuSH зависит от вашего канала и от того, как он ретранслируется. Помните, что с PuSH требуется всего 4 сетевых перехода, прежде чем контент достигнет подписчика.

Еще большая проблема в том, что PuSH полагается на HTTP Post. Даже если вы в конечном итоге создадите приложение для чата на основе PuSH и скажете, что на более позднем этапе вы хотите сделать его доступным для других устройств или даже в качестве настольного приложения, вам придется ретранслировать тот же контент с помощью XMPP. Другое место, где вы будете проигрывать, - это то, что пользователям вашего чат-приложения будет очень сложно войти в систему из любого другого IM по своему выбору.

person Shripad Krishna    schedule 21.03.2010

Вы можете использовать REST API с WebSocket для реализации архитектуры издателя / подписчика.

Atmosphere и swagger sockets - это хорошая среда Java, которую вы можете подключить к своему Jersey REST api и добиться этого .

В блоге создателя Atmospehre, jfarcand, есть один пример приложения чата, созданного с использованием этих технологий.

person Giorgio    schedule 14.07.2012