是否值得定制XMPP服务器? (与客户工作者相比)

时间:2011-09-09 08:56:05

标签: xmpp

我被问到为内部应用程序编写ejabber模块的可能性。我反对这个想法,但我不太熟悉xmpp以支持我的回应,也许我错了。

当google确实挥手时,他们选择了xmpp;我理解那个选择;多人之间的实时沟通。同样的目标在这里。

...但我觉得像定制的服务器插件不是正确的答案。

我看到的问题是:

1)您失去与服务器开发的同步,并且必须通过合并地狱来确保修补服务器上的安全更新,补丁等。

2)服务器的任何大量定制意味着您可能希望传递特殊标记消息以与服务器插件交互;这意味着您还必须进行大量的客户端定制。

还有另一条路线:

标准XMPP服务器。两个定制的xmpp客户端;一个用于客户端,一个用于服务器。

服务器客户端打开与XMPP服务器的连接,然后等待。

多个前端客户端打开与XMPP服务器的连接,然后使用xmpp可选地打开连接:1)相互之间以及2)服务器客户端用户。

然后,前端可以通过与服务器客户端通信来执行实时更新。它甚至可以订阅多个服务器客户端用户,并为多个不同的并发任务提供传入的“活动流”。

这有以下优点:

1)您只需要解决一次XMPP问题(客户端库)

2)您的应用程序服务器永远不会在外部可见;只有XMPP服务器是外部可见的,这是巨大的安全性胜利。

3)您可以毫无问题地使用您想要的任何XMPP服务器基础架构。

4)您永远不会有服务器更新导致您的应用程序服务器变为“遗留”并且无法再使用这些api(缺少完整的XMPP协议更新)。

缺点:

您的应用程序服务器客户端需要足够复杂以处理多个请求,或者有多个工作人员或某些东西(但这会使用资源字段进行扩展,并且有来自连接到XMPP网络的不同计算机的多个应用程序服务器)。

......但是,我对这项技术并不熟悉。

为什么我建议的替代方案会比定制的xmpp服务器更差?

1 个答案:

答案 0 :(得分:0)

XMPP仅用于联盟中的Google Wave / Wave in Box,即仅用于服务器到服务器的通信。这是为了利用现有的XMPP功能,如发现协议。消息以二进制形式在XMPP数据包内的服务器之间传输。 Web客户端使用WebSockets / Socket.IO与服务器通信。实际上,这就是为什么要争论开发一种替代的基于纯HTTP的联邦协议。