美文网首页
iOS 消息推送方案对比

iOS 消息推送方案对比

作者: iOS104 | 来源:发表于2017-06-15 00:44 被阅读224次

应用场景

社交聊天,直播弹幕,多玩家游戏,金融股票,体育直播,位置变化,智能家居

轮询

长轮询与短轮询的区别
  • 短轮询去服务端查询的时候,不管服务端有没有变化,服务器就立即返回结果了。
  • 长轮询则不是,在长轮询中,服务器如果检测到库存量没有变化的话,将会把当前请求挂起一段时间(这个时间也叫作超时时间,一般是几十秒)。
  • 在这个时间里,服务器会去检测库存量有没有变化,检测到变化就立即返回,否则就一直等到超时为止,这就是区别。
长短连接的区别
  • 一个 TCP 连接是否为长连接,是通过设置 HTTP 的 Connection Header 来决定的,而且是需要两边都设置才有效。
  • 长短连接是传输层概念
  • 轮询方式是否为长轮询,是根据服务端的处理方式来决定的,与客户端没有关系

MQTT

MQTT 协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议
协议简单,流量少;订阅+推送模式,非常适合Uber、滴滴的小车轨迹的移动,智能家居。

它具有以下主要的几项特性:

  • 非常小的通信开销(最小的消息大小为 2 字节),小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
  • 支持各种流行编程语言(包括 C,Java,Ruby,Python 等等)且易于使用的客户端;
  • 使用发布 / 订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
  • 对负载内容屏蔽的消息传输。
  • 使用 TCP/IP 提供网络连接。
  • 有三种消息发布服务质量,让消息能按需到达目的地,适应在不稳定工作的网络传输需求 :
    • "至多一次",消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
    • "至少一次",确保消息到达,但消息重复可能会发生。
    • "只有一次",确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
  • 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

WebSocket

概念

  • WebSocket是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。
  • WebSocket 通信协定于2011年被 IETF 定为标准 RFC 6455,WebSocket API 被 W3C 定为标准。
  • 在 WebSocket API 中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

与MQTT的交集

  • 两者之所有有交集,是因为一个应用场景:如何通过HTML5应用来作为MQTT的客户端,以便接受设备消息或者向设备发送信息,那么MQTT over WebSocket自然成了最合理的途径了。

XMPP

  • 优点:协议开源,可拓展性强,在各个端(包括服务器)有各种语言的实现,开发者接入方便
  • 缺点:缺点也是不少,XML表现力弱、有太多冗余信息、流量大,实际使用时有大量天坑。

私有协议

市面上几乎所有主流IM APP都是是使用私有协议,一个被良好设计的私有协议优点非常明显。

  • 优点:高效,节约流量(一般使用二进制协议),安全性高,难以破解;

  • 缺点:在开发初期没有现有样列可以参考,对于设计者的要求比较高。

APNs

  • 缺点:无法保证消息的及时性。让服务端负载过重,APNs不保证消息的到达率,消息会被折叠
  • 如果面向的目标用户对消息的及时性并不敏感,可以采用这种方案

建议

  • 如果团队小,团队技术在 IM 上积累不够可以考虑使用 XMPP 或者 MQTT+HTTP 短连接的实现。
  • 大团队可以考虑自己设计和实现私有协议,这里建议团队有计划地迁移到私有协议上。

相关文章

  • iOS 消息推送方案对比

    应用场景 社交聊天,直播弹幕,多玩家游戏,金融股票,体育直播,位置变化,智能家居 轮询 长轮询与短轮询的区别 短轮...

  • 细说 iOS 消息推送

    细说 iOS 消息推送 细说 iOS 消息推送

  • 移动端消息推送方案

    对目前Android平台上最主流的几种消息推送方案进行分析和对比,比较客观地反映出这些推送方案的优缺点,帮助大家选...

  • iOS集成个推小结

    一、以下为我集成时的问题与解决方案: 1、iOS通知,在官网后台怎么推送,不能单独推送通知? iOS只能透传消息,...

  • android消息推送 IM实现方案对比

    1、GCMGoogle的云消息服务,国内使用限制,放弃2、XMPP基于XMl协议的通讯协议,成熟,由于使用xml传...

  • Pusher

    测试消息的推送,可以使用Pusher这个工具。 内容界面 参考资料云信IOS推送收不到问题排查方案

  • iOS 远程推送通知

    iOS 远程推送通知 分分钟搞定IOS远程消息推送 iOS推送通知的实现步骤 推送通知iOS客户端编写实现及推送服...

  • iOS 远程消息推送 APNS推送原理和一步一步开发详解篇(新手

    iOS 远程消息推送 APNS推送原理和一步一步开发详解篇(新手推荐) iOS 远程消息推送 APNS推送原理和一...

  • 技术贴合集

    iOS网络图片尺寸适配 iOS 10 消息推送(UserNotifications)秘籍总结 静默推送 iOS 面...

  • iOS开发常用之消息相关

    消息相关 消息推送客户端 SGPushDemo - 消息推送客户端 Orbiter - 消息推送客户端:iOS...

网友评论

      本文标题:iOS 消息推送方案对比

      本文链接:https://www.haomeiwen.com/subject/fefyqxtx.html