11

我为我的项目考虑技术堆栈,并考虑使用 ejabberd。该项目将看起来像经典的多用户地牢 RPG,玩家将在世界各地从一个位置移动到另一个位置(位置看起来与聊天室完全一样),他们还将在回合制模式下互相对抗以及具有 AI 的生物.

我从未使用过 ejabberd,但我有一些使用 erlang 编写服务器应用程序的经验。

ejabberd 对于这种游戏来说是不是有点过头了?它有很多我永远不需要的功能。然而,它为 erlang 开发人员所熟知,并且非常稳定和成熟。ejabberd 是否值得将它用作我的在线游戏的一种传输层,或者我应该更好地发明自己的轮子,一些小而简单的东西?

4

1 回答 1

12

我有几年的商业经验,使用 ejabberd 做这样的事情。所以,我的看法:

优点:

  1. 它在技术上当然是有能力的。
  2. 这很容易摸索。
  3. 它非常容易扩展和修改。
  4. 如果您定期更新它,它将解决两个非常重要的方面。A. 网络安全(这对我来说非常重要);B.正确完成认证。仅这两个就足以成为使用它的理由。
  5. 它出奇的快。
  6. 它免费为您提供聊天、状态和好友列表。
  7. 它免费为您提供 MUC(房间)。权限之类的所有事情都很好地解决了。

缺点:

  1. 不要真的期望找到任何可用的文档。来源主要是你唯一的朋友。
  2. 不要真的期望找到一个社区。这是一条孤独的路。有一个房间 - ejabberd@conference.jabber.ru 但它非常安静(几乎是空的)。那里的大多数人不是开发人员,而只是 ejabberd 用户。邮件列表稍微好一点,但通常不足以找到您所寻求的答案。
  3. 源代码本身并不是 erlang 项目的最佳示例。如果你想学习如何编写大型、模块化、分布式的 erlang 软件,最好看看 Riak 之类的东西。
  4. 内部 API 不是很稳定(它们随版本变化很大)。因此,我建议将您的软件编写为一个单独的 erlang 应用程序,并作为外部 XMPP 组件连接到 ejabberd。因此,您将被保证通过稳定的协议 (XMPP) 进行通信。当然,您也无法避免编写一些内部内容。身份验证和名册(朋友列表)模块是首先想到的。这种组合很难维护和更新,特别是如果您需要热代码加载,但它对我来说仍然是最好的解决方案。尝试将“in-ejabberd”代码保持在可行的最低限度。
  5. 话虽如此,只有一个(据我所知)可用的 XMPP erlang 库。它被称为 exmpp,由与 ejabberd (ProcessOne) 相同的公司开发。它还没有被认为是稳定的。我已经使用它很长一段时间了,现在没有问题,但你永远不知道。它也大多是无证的(或者,当我学习它时)。
于 2012-06-14T19:00:25.553 回答