Ответ 1
У меня есть несколько лет коммерческого опыта, используя ejabberd для таких вещей. Итак, мой прием:
Плюсы:
- Это, безусловно, технически возможно.
- Достаточно легко понять.
- Это очень легко расширить и изменить.
- Если вы регулярно обновляете его, он решает два действительно важных аспекта. A. сетевая безопасность (для меня это очень важно); и B.Properly сделали аутентификацию. Только этих двух достаточно, чтобы использовать его.
- Это удивительно быстро.
- Это дает вам чат, список присутствия и друзей бесплатно.
- Это дает вам MUC (комнаты) бесплатно. Со всеми вещами, такими как разрешения, решены достаточно хорошо.
Минусы:
- На самом деле не ожидайте найти полезную документацию. Источник - это в основном ваш единственный друг.
- Не ожидайте найти сообщество. Это одинокий путь. Существует комната - [email protected], но она очень тихая (и почти пустая). Большинство людей там не разработчики, а просто пользователи ejabberd. Список рассылки немного лучше, но обычно этого недостаточно, чтобы найти ответ, который вы ищете.
- Исходный код per se - не лучший пример проекта erlang. Если вы хотите научиться писать большое, модульное, распределенное программное обеспечение erlang, лучше взгляните на что-то вроде Riak.
- Внутренние API не очень стабильны (они сильно меняются при выпуске). Из-за этого я рекомендую писать ваше программное обеспечение как отдельное приложение erlang, подключаясь к ejabberd в качестве внешнего компонента XMPP. Таким образом, вам гарантируется, что вы будете общаться через стабильный протокол (XMPP). Конечно, вы не можете избежать необходимости писать некоторые внутренние вещи. Модули аутентификации и составления списков (список друзей) - это первые, которые приходят на ум. Эта комбинация довольно сложно поддерживать и обновлять, особенно если вам нужна загрузка с помощью горячего кода, но это еще лучшее решение для меня. Попытайтесь сохранить код "in-ejabberd" до приемлемого минимума.
- Говоря, есть только одна (насколько мне известно) используемая библиотека XMPP erlang. Он называется exmpp и разработан той же компанией, что и ejabberd (ProcessOne). Он еще не считается стабильным. Я использую его довольно долгое время, и пока нет проблем, но вы никогда не знаете. Это также в основном недокументировано (или было, когда я изучал его).