移动互联网消息推送原理:长连接+心跳机制(mqtt协议)

烂笔头儿 烂笔头儿     2022-08-21     224

关键词:

  互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了,所以才会出现像MQTT这种轻量级低消耗的协议来维护长连接,那么要如何维护长连接呢:

    在写之前,我们首先了解一下为什么Android维护长连接需要心跳机制,首先我们知道,维护任何一个长连接都需要心跳机制,客户端发送一个心跳给

服务器,服务器给客户端一个心跳应答,这样就形成客户端服务器的一次完整的握手,这个握手是让双方都知道他们之间的连接是没有断开,客户端是在线

的。如果超过一个时间的阈值,客户端没有收到服务器的应答,或者服务器没有收到客户端的心跳,那么对客户端来说则断开与服务器的连接重新建立一个

连接,对服务器来说只要断开这个连接即可。那么在智能手机上的长连接心跳和在Internet上的长连接心跳有什么不同的目的呢?原因就在于智能手机使用的

是移动无线网络,那么我们在讲长连接之前我们首先要了解无线移动网络的特点。

  1. 无线移动网络的特点

        当一台智能手机连上移动网络时,其实并没有真正连接上Internet,运营商分配给手机的IP其实是运营商的内网IP,手机终端要连接上Internet还必须通过运营

商的网关进行IP地址的转换,这个网关简称为NAT(NetWork Address Translation),简单来说就是手机终端连接Internet 其实就是移动内网IP,端口,外网IP之间

相互映射。相当于在手机终端在移动无线网络这堵墙上打个洞与外面的Internet相连。原理图如下:(来源网络)

  GGSN(GateWay GPRS Support Note 网关GPRS支持节点)模块就实现了NAT功能,由于大部分的移动无线网络运营商为了减少网关NAT映射表的负荷,如

果一个链路有一段时间没有通信时就会删除其对应表,造成链路中断,正是这种刻意缩短空闲连接的释放超时,原本是想节省信道资源的作用,没想到让互联网

的应用不得以远高于正常频率发送心跳来维护推送的长连接。这也是为什么会有之前的信令风暴,微信摇收费的传言,因为这类的应用发送心跳的频率是很短的,

既造成了信道资源的浪费,也造成了手机电量的快速消耗。

  2. android系统的推送和iOS的推送有什么区别

        首先我们必须知道,所有的推送功能必须有一个客户端和服务器的长连接,因为推送是由服务器主动向客户端发送消息,如果客户端和服务器之间不存在一

个长连接那么服务器是无法来主动连接客户端的。因而推送功能都是基于长连接的基础是上的。

        IOS长连接是由系统来维护的,也就是说苹果的IOS系统在系统级别维护了一个客户端和苹果服务器的长链接,IOS上的所有应用上的推送都是先将消息推送

到苹果的服务器然后将苹果服务器通过这个系统级别的长链接推送到手机终端上,这样的的几个好处为:1.在手机终端始终只要维护一个长连接即可,而且由于

这个长链接是系统级别的不会出现被杀死而无法推送的情况。2.省电,不会出现每个应用都各自维护一个自己的长连接。3.安全,只有在苹果注册的开发者才能

够进行推送,等等。

       android的长连接是由每个应用各自维护的,但是google也推出了和苹果技术架构相似的推送框架,C2DM,云端推送功能,但是由于google的服务器不在中

国境内,其他的原因你懂的。所以导致这个推送无法使用,android的开发者不得不自己去维护一个长链接,于是每个应用如果都24小时在线,那么都得各自维

护一个长连接,这种电量和流量的消耗是可想而知的。虽然国内也出现了各种推送平台,但是都无法达到只维护一个长连接这种消耗的级别。

  3. 推送的实现方式

  一:客户端不断的查询服务器,检索新内容,也就是所谓的pull 或者轮询方式

  二:客户端和服务器之间维持一个TCP/IP长连接,服务器向客户端push

  三:服务器又新内容时,发送一条类似短信的信令给客户端,客户端收到后从服务器中下载新内容,也就是SMS的推送方式

  苹果的推送系统和googleC2DM推送系统其实都是在系统级别维护一个TCP/IP长连接,都是基于第二种的方式进行推送的。第三种方式由于运营商没有免费开放

这种信令导致了这种推送在成本上是无法接受的,虽然这种推送的方式非常的稳定,高效和及时。

如果想了解android中各种推送方式请参考这个链接:http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378971.html  这篇博客已经介绍的非常好了。

 转自:http://blog.csdn.net/clh604/article/details/20167263

互联网推送服务原理

本文摘抄自网络,原地标题:互联网推送服务原理:长连接+心跳机制(MQTT协议)  互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个... 查看详情

android心跳包心跳连接如何实现android和服务器长连接呢?推送消息的原理

前言:现在的大多数移动端应用都有实时得到消息的能力,简单来说,有发送消息的主动权和接受消息的被动权。例如:微信,QQ,天气预报等等,相信好处和用户体验相信大家都知道吧。 提出问题:这种功能必须涉及client... 查看详情

浅析即时通讯开发中移动端实时消息推送技术

实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具。本文将从移动端无线网络的特点来谈谈实时消息推送的技术原理及相关问题,希望能给你带来些许启发。 移... 查看详情

车联网中mqtt心跳保活与远程唤醒设计

...验,需要通过车联网平台与车机的心跳保活机制,保持长连接状态,并在车辆熄火的情况下快速远程唤醒车机,实现远程控车。本篇文章将介绍车联网平台中​​MQTT​​的心跳保活和远程唤醒设计。MQTT 查看详情

【内部分享】mqtt协议解读及使用经验

...QTT协议真正开始声名鹊起的原因,是其正好恰恰踩中移动互联网发展的节拍,为消息推送场景提供了一个既简便又具有良好扩展性的现成解决方案。http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html可以看出,MQTT对消息头的规... 查看详情

mqtt是ibm开发的一个即时通讯协议,构建于tcp/ip协议上,是物联网iot的订阅协议,借助消息推送功能,可以更好地实现远程控制

...,面向M2M和物联网IoT的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了MQTTv3.1协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通 查看详情

如何高效维持网络长连接:手把手教你实现自适应的心跳保活机制

...种原因进行分析当进程被杀死后,长连接也会随之断开当移动客户端网络状态发生变化时(如移动网络&Wifi切换、断开、重连),也会使长连接断开如网络状态差、DHCP的租期到期等等,都会使得长连接发生偶然的断开其实,... 查看详情

如何采用mqtt协议实现android消息推送

...了消息推送。消息推送是通过一定的技术标准或协议,在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。如果想要使用消息推送,推荐使用深圳极光的消息推送系统。深圳极光是国内首个为移动应用开发者... 查看详情

万物互联—mqtt协议

...999年以来,已在多个行业广泛实施,是一种物联网和移动互联网领域的行业标准协议,适合移动终端之间的数据传输,用于端与云之间的消息传递,实现真正意义上的万物互联。二、应用场景由于MQTT版的多协议、多语言和多平... 查看详情

mqtt消息中间件特性(代码片段)

...低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性(1)使用发布/订阅消息模... 查看详情

mqtt协议分析(代码片段)

...于低带宽和不稳定的网络环境中,比如远程传感器和移动设备等。它支持一对多的消息传输,可以被广泛应用于物联网、移动应用程序、工业自动化、金融服务等领域。基本原理MQTT使用基于TCP/IP协议的可靠传输机制来实... 查看详情

mqtt协议学习:001-有关概念入门(代码片段)

...联网(IoT)世界的连接设备,以及带宽和电池功率非常高的移动应用的理想选择。例如,它已被用于通过卫星链路与代理通信的传感器、与医疗服务提供者的拨号连接,以及一系列家庭自动化和小型设备场景。它也是移动应用的理... 查看详情

时间轮原理及其在框架中的应用(代码片段)

作者:vivo互联网服务器团队-LiWanghong一、时间轮简介1.1为什么要使用时间轮在平时开发中,经常会与定时任务打交道。下面举几个定时任务处理的例子。1)心跳检测。在Dubbo中,需要有心跳机制来维持Consumer与Provider的长连接,... 查看详情

mqtt学习笔记

...QTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了MQTTv3.1协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。 &nb... 查看详情

push推送机制与im即时通信的长链接机制两者的异同

长连接概念:多用于操作频繁,点对点的通讯,而且连接数不能太多情况。指在一个连接上可以连续发送多个数据包(心跳包,防止NAT超时,及探测连接是否断开),在连接保持期间,如果没有数据包发送,需要双方发链路检测... 查看详情

5g对mqtt有啥影响?

...及消息存储和过滤;3)低带宽、低耗能、低成本:占用移动应用程序带宽小,并且带宽利用率高,耗电量较少。MQTT的优势还表现在安全性。相对于其它标准协议,MQTT属于轻量级双向消息传输协议,主要优势是开源、可靠、轻巧... 查看详情

mqtt协议笔记之连接和心跳

...分采用的修改版的UTF-8编码,CONNECT可变头部中协议名称、消息体都是采用修改版的UTF-8编码。前面基本上可变头部内容不多,下面是一个较为完整的CONNECT消息结构: Description 查看详情

手机推送原理

...单推送到送货员手机上,于是就想搞清楚推送这个原理....移动手机推送消息的方式很常见,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果ÿ... 查看详情