Сервер чата с websocket + node.js против собственного клиента с xmpp - PullRequest
7 голосов
/ 07 марта 2012

Я не смог найти никаких разумных критериев для сравнения между клиентом чата, который работает с использованием чата server.js V.S. клиент, который работает с xmpp.

Я знаю, что node.js асинхронный, и насколько я знаю, xmpp. Тем не менее, моя главная проблема - производительность при том же количестве одновременно работающих пользователей.

Мне нужна эта информация, чтобы написать приложение для Android. Хотелось бы узнать ваше мнение и преимущества / недостатки при использовании обеих систем.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 26 апреля 2012

Я создал несколько служб чата с Node.js для клиентов, и, хотя я могу сказать, что легко запустить базовую службу чата с Node.js, вы, скорее всего, потратите много времени на то, чтобы заново изобрести колесо, если Вы выбираете этот маршрут. Сервер XMPP, такой как eJabberd, обладает множеством встроенных функций, которые вам не придется перестраивать. Аутентификация, многопользовательский чат, модерация (кик / бан / игнорирование), настройки пользователя, ведение журнала и т. Д.

Для проектов, над которыми я работал, eJabberd, безусловно, был излишним, так как им нужны были только основы, но вы должны тщательно рассмотреть ваш вариант использования, потому что принимаете решение.

Я думаю о создании веб-клиента Node.js для XMPP, чтобы сделать что-то похожее на Campfire, но с eJabberd в качестве бэкэнда. На самом деле я не стремился к этому, но думаю, что это был бы хороший способ получить лучшее из обоих миров.

1 голос
/ 09 июля 2012

Это также зависит от того, какого типа клиент вы пишете: клиенты на основе браузера используют BOSH, то есть XMPP поверх HTTP, который использует длинный опрос (аналог кометы). Это создает по крайней мере один запрос каждые 30 секунд (в зависимости от настроек) от каждого клиента, который начинает складываться после получения нескольких тысяч клиентов. Мне было бы интересно посмотреть на это сравнение - кажется, что веб-сокеты должны иметь преимущество.

1 голос
/ 07 марта 2012

Хотя я понимаю, о чем вы спрашиваете, вы пытаетесь сравнить реализацию Javascript на стороне сервера (Node.js) с протоколом обмена сообщениями (XMPP).

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

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

В конечном итоге выбор за вами, поскольку вы знаете больше всего о своем конкретном приложении.Вы должны сравнивать решения не только по производительности их одного узла, но также по времени разработки и масштабируемости среди других факторов.

...