1

在过去的几天里,我一直在兜圈子,试图为我的问题找到一个好的解决方案。这里的主要关键是这是针对 iOS 应用程序的。我想要的是从一台设备快速通信到另一台设备更新。所以如果用户 1 执行了一个动作,我想实时地告诉用户 2 用户 1 已经执行了这个动作。

出于各种原因,我不想使用 Apple 推送通知。所以这是不可能的。我研究了 Pusher 和 PubNub 之类的服务,但这些服务太贵了(并且只允许极少的并发连接数,~2500)。我还研究了 Google App Engine 的 Channel API,但它通过 Javascript 工作,并且必须在 iOS 上使用阴暗的技术来实现。老实说,我宁愿不使用它。

所以现在我正在研究 Google App Engine 中的 XMPP。似乎它会做我想做的事,但我不确定我是否理解了整个画面。难道我不能使用 XMPP 消息完成我想要的,即当用户 1 执行操作时,我可以使用 JSON 消息快速通知用户 2?

这里的主要关键是我必须在后台使用用户的唯一 ID 为 XMPP 执行用户注册。这是否可以在没有用户干预的情况下自动创建一个 Jabber ID,例如 user-unique-id@my-app-engine-domain.com?

总的来说,这是一个可行的解决方案吗?我错过了什么?有哪些例外?

4

2 回答 2

2

您所描述的一切听起来都可以通过 XMPP 轻松实现。

只是几点。

  • 当然,您确实意识到它是基于 XML 的,因此您的 JSON 消息将嵌入 XML 节中,并在必要时进行适当的转义。
  • 您的用户注册将由服务器实现确定,但我相信大多数将允许自定义身份验证挂钩(如 LDAP)。因此,拥有外部注册机制应该不是问题,并且是一种相当普遍的方法。
  • 由于您使用的是 ios,因此您应该将XMPPFramework视为您的 XMPP 库。
  • 根据您的用例,您可能还希望查看XMPP pubsub以获取更新,具体取决于在进行更改时应该有多少其他设备收到消息。我已经使用了这种方法,它适用于实时客户端到客户端更新。
于 2012-11-08T14:03:52.667 回答
1

AppEngine 仅支持 XMPP 作为客户端:它可以发送和接收消息。这里的关键是,如果您查看发送 XMPP 消息的文档,每个客户端都需要拥有自己的地址 (JID),而 GAE 未提供该地址。

因此,为了支持您的情况,您需要有一个外部 XMPP 服务器,每个客户端都有自己的 JID,然后您可以向它们发送 XMPP 消息。

于 2012-11-08T06:39:06.597 回答