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 и наоборот?
Ответы
Ответ 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/