繁体   English   中英

使用XMPP作为推送服务器?

[英]Using XMPP as a push server?

过去几天我一直在乱跑,试图为我的问题找到一个很好的解决方案。 这里的主要关键是这是一个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执行用户注册。 这是否可行,在没有用户干预的情况下自动创建一个像user-unique-id@my-app-engine-domain.com这样的Jabber ID?

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

您所描述的所有声音都可以通过XMPP轻松完成。

只是几点。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM