使用XMPP构建聊天应用程序的模式

时间:2012-10-21 13:43:20

标签: java android google-app-engine openfire smack

我使用Google App Engine Server构建了一个Android应用程序。现在我想在我的应用中添加简单的聊天功能。我有一些问题。

  • 我的用户注册了他们想要的电子邮件域名,如hotmail.com,yahoo.com甚至更深奥的域名,这是否意味着我需要为他们创建JID?如果是这样,Google App引擎会为我可以操作的app域提供JID创作吗?

  • 我读到Google App Engine充当XMPP客户端,因此我需要可以接收和发送XMPP消息的Xmpp Server。为什么我要GAE? Openfire是我的答案吗?我可以将Openfire与GAE集成吗?

  • 我还读到如果我想在GAE和Android中使用XMPP需要aSmack Api用于我的客户端并且它正在使用HTTP。所以我想我需要每隔几秒钟轮询一次服务器的消息。有更好的模式吗?

2 个答案:

答案 0 :(得分:0)

  

我可以将Openfire与GAE集成吗?

您无法在GAE上运行Openfire,因为GAE仅适用于HTTP,因此您无法像Openfire那样通过套接字进行连接。

答案 1 :(得分:0)

  

我的用户注册了他们想要的电子邮件域名,如hotmail.com,yahoo.com甚至更深奥的域名,这是否意味着我需要为他们创建JID?如果是这样,Google App引擎会为我可以操作的应用域提供JID创作吗?

如果我理解你的问题,你不应该有任何问题。只要您不是垃圾邮件发送者,我们就不会对您可以发送的域名进行任何限制。

  

我读到Google App Engine充当XMPP客户端,因此我需要可以接收和发送XMPP消息的Xmpp服务器。为什么我要GAE? Openfire是我的答案吗?我可以将Openfire与GAE集成吗?

您可以通过xmpp API发送和接收XMPP消息(这是python版本)。这会调用Google Talk基础架构。您无权访问传统上称为“XMPP服务器”的内容,但您可以访问基本的XMPP功能。

我对OpenFire了解不多,但 是针对you can sign up for的出站套接字的受信任测试程序。如果您需要外部XMPP服务器,这就是您需要的。

  

我还读到如果我想在GAE和Android中使用XMPP需要aSmack Api用于我的客户端并且它正在使用HTTP。所以我想我需要每隔几秒钟轮询一次服务器的消息。有更好的模式吗?

我应该通过说我对Android或aSmack不了解很多,但这并不能阻止我在回答你的问题时采取措施。 : - )

我认为这取决于你的用例,但我想不出你需要做的任何情况。您的应用程序的用户是否在他们注册的服务器上拥有自己的JID?如果是这样,我没有看到你必须通过HTTP连接的任何理由,除非这是所有aSmack支持的。 BOSH / XMPP-over-HTTP的主要用例是在浏览器中,您实际上无法访问打开的原始套接字。

如果您想将XMPP用作用户不知道的消息/通知服务,则可能更复杂。我应该注意,您可以始终在Google Compute Engine上设置XMPP服务器。