计算机论文
服务器端推送技术
时间:2024-02-21 00:30 所属分类:计算机论文 点击次数:
1.移动终端推送协议
在基于Android平台的智能终端上,当推送消息到达时,会显示在屏幕顶部的通知栏中。下降通知栏查看推送信息的具体内容。一般来说,Android平台上的推送协议主要包括:Android云到端消息服务(Android Cloud to Device Messaging, C2DM)谷歌推出的优点是不需要部署,但由于其服务器位于国外,很难保证推送服务的稳定性;C2DM服务与Android2.2之前的版本不兼容。消息队列传输协议(Message Queuing Telemetry Transport,MQTT)它是由IBM实现的。在代理机制和“提交和广播”模式的基础上,这种即时通讯协议相对简单,可以在一定程度上节省流量,是一种轻量级协议。扩大信息处理协议(Extensible Messaging and Process Protocol, XMPP)它是以XML为基础的,已经实现了标准化工作,相对成熟;但这种协议在实现上更为复杂。
在实现C2DM推送协议时,需要移动设备、C2DM服务器和应用程序服务器的支持。在C2DM服务器的帮助下,安装了高于Android2.2版本的移动设备运行应用程序;应用程序服务器使用移动设备上的C2DM服务器向移动设备推送服务;C2DM服务器接收应用程序服务器发送的推送消息,并转发到移动设备屏幕顶部的通知栏。在实现基于C2DM协议的服务推送过程时,需要经过以下步骤[3]:(1)注册账号。用户在要使用推送服务的Android终端上注册账号和APP名称,然后C2DM服务器将向Android终端返回注册ID。(2)请求推送数据。Android终端将收到的注册ID和账号发送给应用程序服务器,请求数据。(3)接收数据。应用程序服务器将推送数据与注册ID一起发送到Android终端上的C2DM服务器,C2DM服务器将推送数据转发到Android终端。 MQTT一般运行在嵌入式设备中,可适用于网络带宽不可靠、网络成本高的环境,因此常用于智能终端等设备。MQTT协议采用TCP长连接的方式建立连接,并以发布/订阅的方式发布消息,消息传输时可屏蔽负载内容。此外,MQTT协议中还有三种服务质量(QoS)等级,可根据需要设置不同的等级,以控制信息传输质量。在实现基于MQTT协议的服务推送流程时,需要经过以下步骤[4]:首先,Android终端要求代理服务器订阅主题并接收消息;代理服务器在分析订阅主题数据后通知应用程序服务器。接下来,应用程序服务器将HTTP请求发送到推送服务API接口,并使用MQTT协议发送给代理,代理服务器将推送消息转发到Android终端。MQTT协议的数据包采用固定包头,并根据位置操作设置数据属性,最大限度地利用包空间,适用于低带宽、低流量的应用环境。
与其他推送协议相比,XMPP具有一定的优势。XMPP协议是开放的,有一个特殊的团队来维护它,任何人都可以改进它;基于XML的特点,它具有一定的可扩展性,可以在跨平台上使用。扩展后的XMPP协议的顶部可以建立一个更高层次的应用程序,以实现与非XMPP系统的通信。XMPP协议中有三个角色:网关、服务器和客户端,两者之间都可以有双向通信。XMPP的通信方式类似于HTTP协议,这也是一个“封存-解除”文本数据流的过程。此外,由于XMPP协议的通信实体可以是任何网络单元,每个通信实体都有自己的唯一ID,因此XMPP协议并不局限于即时通信领域。
2.服务器端推送技术
Comet是一种基于纯浏览器的推送技术,在应用程序服务器和Android终端之间建立TCP长连接。服务器可以实时更新信息,而无需客户端(Android终端)的请求,因此是一种典型的服务器推送技术。Comet有两种基于AJAX的长轮查询模式和基于IFrame的流模式,允许在HTML页面上嵌入隐藏帧,并在此帧上设置长连接请求,以实时推送数据。在应用Comet模型时,不能在同一客户端上建立两个长连接,客户端和服务器端应该有一定的心跳信息,以保持长连接的有效性。
直接连接远程Web(Direct Web Remoting,DWR)该框架允许Android终端在JavaScript语言的帮助下执行应用服务器的事务操作。DWR2.0后增加了服务器推送功能,可以将需要远程调用的方法转换为浏览器可以直接调用的JavaScript代码。除了Comet,DWR框架主要有两种推送模式。轮询模式的优点是实现简单,适合数据生成时间有规律的情况。缺点是连接请求建立频繁,数据及时有效难以保证。Piggyback模式可以保证每个请求都会击中数据,但以小数据吞吐为代价,如果推送数据更新过快,可能会导致Android终端请求峰值过多。
包括WebSocket技术包括WebSocket技术包括WebSocket API接口和WebSocket协议采用双向Socket传输方式推送数据,避免了Comet方式中的链接和移植问题。与其他服务器推送技术相比,WebSocket最大的优点是可以在Android终端和应用服务器会话的任何时候推送消息。WebSocket技术是一种理想的服务器推送技术,可以显著减少时间延迟和CPU消耗。