推送通知与Web套接字实现实时聊天应用程序?

Vla*_*lad 26 iphone messaging push-notification apple-push-notifications

我正在研究为iPhone构建实时聊天应用程序(但这个问题同样适用于Android和其他设备)基本上我希望应用程序在打开时以及关闭时接收实时消息,就像iPhone一样拥有"消息"应用程序.

当它关闭时,我可以使用本地推送通知服务,如APNS,当应用程序打开时,我可以运行自己的websockets服务器或使用第三方提供程序,如PubNub或Pusher,这是我一直在做的事情.

然后我想知道:为什么我不能完全依赖APNS进行实时消息传递,同时应用程序处于打开状态且关闭时?这感觉就像一个更清洁的解决方案,因为它是由一个推送服务器驱动的.有人可以开导我吗?谢谢.

Leo*_*ica 27

APNS不是100%可靠.在大多数情况下,但不是100%.它也没有您提供的专用服务那么快.有时,推送消息需要花费一分钟才能到达.您需要考虑这些并在您提出的任何设计中考虑它们.如果您可以忍受这些限制,您确实可以依靠APNS来更新您的客户端.此外,使用iOS7,应用程序可以在后台唤醒,检索数据并更新其UI,以便向用户呈现最新的应用程序.

在谈到性能时,能够处理多个开放式连接并同时为它们提供服务并不像听起来那么简单,因此根据您的资源,您可能无法提供比Apple的APNS更好的服务正常运行时间,因此上述限制虽然是真实的,但并不一定像它们听起来那么糟糕.

我认为最好是,因为你需要实现推送支持,只实现APNS,看看这是否满足你和你的客户.请记住,沙盒(调试)APNS服务器比正常生产APNS服务器慢,因此请使用发行版本进行测试,以了解仅使用APNS的真实性能影响.如果您发现提供的服务不够,您只能实施其他服务.

  • @Vlad WhatsApp和FB Messenger在应用程序处于活动状态时同时具有某种APNS支持和连接.我认为他们通过长时间运行的后台任务来扩展该连接.一旦应用程序在后台足够长,它们就只依赖于APNS.Skype最近增加了推送支持,仅依靠自己的内部连接.这些是我使用的唯一,所以不确定其他人. (3认同)
  • 非常感谢。我什至不知道沙箱 APNS 应该很慢,我想知道我的连接出了什么问题!您知道这种 APNS 方法是否是大多数消息应用程序(例如 Whatsapp、Line、Wechat 等)采用的方法? (2认同)