Подтвердить что ты не робот

Node.js с модулем Socket.io и XMPP - преимущества и недостатки

У меня есть Node.js с приложением чата Socket.io и системой чата XMPP Openfire. Я с нетерпением жду замены XMPP на Node.js и Socket.io. Тем не менее, есть разговоры о том, что Node.js с Socket.io будет иметь проблему, если сервер выйдет из строя и вернется в сеть, у него возникнет синдром узких мест или, возможно, невозможно будет повторно подключить к нему 10 000 интернет-пользователей. Это правда?

Другой вопрос. В каком случае XMPP будет более уместным, чем Socket.io и наоборот?

4b9b3361

Ответ 1

XMPP - это протокол связи открытого стандарта для ориентированного на сообщения промежуточного программного обеспечения (Wikipedia).

Node.js - инструмент разработчика на основе JavaScript для создания сетевых сервисов.

Эти две вещи действительно не сравниваются. Если вы создали приложение чата с socket.io, возможно, что он будет страдать от синдрома узких мест, но он сильно зависит от вашего кода приложения.

В общем, если вы хотите выйти за рамки простого чата на основе браузера, я бы серьезно подумал о XMPP (он же Jabber), поскольку клиенты XMPP легко доступны для всех ОС.

Ответ 2

Я думаю, что плюсы Node.js заключаются в том, что они написаны на общеизвестном языке (Javascript), а не на серверах XMPP, которые общие написаны в erlang/Java, которые не так широко поняты.

Если вы хотите иметь полный контроль над поведением сервера и писать умные модули, то я подозреваю, что node будет лучшим решением для вас.

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

Мой общий совет для вас состоял бы в том, что если текущая система XMPP отлично работает для вас, я просто буду придерживаться ее.

Ответ 3

Как сказал mikl, XMPP - это протокол, а не инфраструктура приложения.

Вы можете создавать приложения XMPP поверх NodeJS так же, как вы можете создавать приложения SocketIO поверх NodeJS. Разница заключается в том, что OpenFire и ejabberd уже давно существуют и тестируются по сравнению с некоторыми решениями, которые вы построили самостоятельно. Это не значит, что вы должны это делать, но это означает, что у вас должно быть хорошее деловое дело для этого.

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

Ответ 4

Вы также можете проверить библиотеку xmppjs, предназначенную для работы с node.js. http://xmppjs.prosody.im/