12

我将开始一个新项目。在这个项目中,我有一个服务器和许多客户端(超过 100000 个)。客户端和服务器将不断地相互通信。他们只使用短信。我认为,使用 tcp 套接字管理起来太难了,所以我应该选择 XMPP 或 SIP。我将在这个项目中使用 Java。你建议我哪一个?以及它们的优缺点是什么?还是您知道更有效的解决方案?

4

2 回答 2

14

这就像把苹果比作橘子,因为 SIP 最初是为 VoIP 设计的,而 XMPP 是为即时消息而设计的。

在我看来,仅对于短信,XMPP 更合适。

从防火墙的角度来看,XMPP 更容易——它只需要一个 TCP 端口 5222(以及用于服务器到服务器通信的端口 5269)。由于 5222 与 Google Talk 使用的端口相同,因此它很少被公司防火墙过滤。XMPP 还支持同一端口 5222 上的 STARTTLS,因此可以轻松保护流量。

另一方面,SIP 通常通过 UDP 工作,需要多个端口,并且通常被公司防火墙过滤。

于 2013-11-01T09:18:34.647 回答
7

我认为您应该使用 SIP,因为它支持对等协议并且基于 UDP/TCP。它支持 SIP SIMPLE 和 CPM,详见http://www.linkedin.com/groups/Differences-betwen-SIP-SIMPLE-CPM-1890406.S.150607448

如果您使用与 SIP SIMPLE 和 CPM 功能捆绑在一起的开源 SIP 堆栈,您将编写更少的代码。

  1. http://dev.telestax.com/jain-sip/

  2. 看看 Mobicent 的基于 Jain-SIP 的 Sip servlet。https://code.google.com/p/sipservlets/。您可以使用 Tomcat/JBoss 进行服务器部署。

  3. https://code.google.com/p/openjsip/

您可以在开源 SIP 服务器之上添加轻量级在线状态服务器,以支持 SIP 客户端之间的在线状态。

在客户端堆栈上,您可以使用基本的开源堆栈。

更多详情@ 寻找适用于 Android 的 SIP 堆栈

https://code.google.com/p/android-rcs-ims-stack/

于 2013-11-21T05:27:25.193 回答