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

4

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

  • 我的用户使用他们所需的电子邮件域名(如 hotmail.com、yahoo.com 甚至更多的奇怪域名)注册,这意味着我需要为他们创建 JID 吗?如果是这样,Google App engine 是否提供了可以操作的与我的应用程序域相关的 JID 创建功能?

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

  • 我还读到如果我想在 GAE 和 Android 中使用 XMPP,则需要 aSmack API 作为我的客户端,并且它正在使用 HTTP 运行。所以我猜我需要每几秒钟轮询服务器以获取消息。有更好的模式吗?

2个回答

0
我的用户使用他们想要的电子邮件域名进行注册,例如hotmail.com、yahoo.com甚至更奇特的域名,这意味着我需要为他们创建JID吗?如果是这样,Google App引擎是否提供了可以操作的与我的应用程序域相对应的JID创建?
如果我正确理解了您的问题,您在这里不应该有任何问题。只要您不是垃圾邮件发送者,我们不会对您可以发送到哪些域名施加任何限制。
我读到Google App引擎充当XMPP客户端,因此我需要一个可以接收和发送XMPP消息的XMPP服务器。那么我使用GAE干什么?Openfire是我的答案吗?我能将Openfire与GAE集成吗?
您可以通过xmpp API(这是Python版本)发送和接收XMPP消息。这会调用Google Talk基础架构。您无法访问传统意义上所说的“XMPP服务器”,但您确实可以访问基本的XMPP功能。

我对OpenFire不是很了解,但是有一个可信任的测试员计划可以用于出站套接字您可以注册。如果您需要外部XMPP服务器,这就是您所需的。

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

我应该先说明一下,我对Android或aSmack并不是很了解,但这并不妨碍我尝试回答您的问题。 :-)

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

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


0
我能将Openfire与GAE集成吗?
你不能在GAE上运行Openfire,因为GAE仅适用于HTTP,所以您将无法像Openfire一样通过套接字连接。

1
不确定这如何适用于GAE,但Openfire具有XMPP BOSH支持(XMPP-over-HTTP)。 - Flow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接