我将开始一个新项目。在这个项目中,我有一个服务器和许多客户端(超过 100000 个)。客户端和服务器将不断地相互通信。他们只使用短信。我认为,使用 tcp 套接字管理起来太难了,所以我应该选择 XMPP 或 SIP。我将在这个项目中使用 Java。你建议我哪一个?以及它们的优缺点是什么?还是您知道更有效的解决方案?
2 回答
这就像把苹果比作橘子,因为 SIP 最初是为 VoIP 设计的,而 XMPP 是为即时消息而设计的。
在我看来,仅对于短信,XMPP 更合适。
从防火墙的角度来看,XMPP 更容易——它只需要一个 TCP 端口 5222(以及用于服务器到服务器通信的端口 5269)。由于 5222 与 Google Talk 使用的端口相同,因此它很少被公司防火墙过滤。XMPP 还支持同一端口 5222 上的 STARTTLS,因此可以轻松保护流量。
另一方面,SIP 通常通过 UDP 工作,需要多个端口,并且通常被公司防火墙过滤。
我认为您应该使用 SIP,因为它支持对等协议并且基于 UDP/TCP。它支持 SIP SIMPLE 和 CPM,详见http://www.linkedin.com/groups/Differences-betwen-SIP-SIMPLE-CPM-1890406.S.150607448。
如果您使用与 SIP SIMPLE 和 CPM 功能捆绑在一起的开源 SIP 堆栈,您将编写更少的代码。
看看 Mobicent 的基于 Jain-SIP 的 Sip servlet。https://code.google.com/p/sipservlets/。您可以使用 Tomcat/JBoss 进行服务器部署。
您可以在开源 SIP 服务器之上添加轻量级在线状态服务器,以支持 SIP 客户端之间的在线状态。
在客户端堆栈上,您可以使用基本的开源堆栈。
更多详情@ 寻找适用于 Android 的 SIP 堆栈