随着移动互联网和移动终端的飞速发展,使用手机等移动终端进行办公的需求高涨。为了响应市场需求,进一步的提高办公效率,降低管理成本,北京机械工业自动化研究所(简称北自所)将在原有RS10/EIP的基础上,抽取出可以用在移动设备上的业务,研究开发一个移动OA(Office Automation)系统,该系统是对原有EIP系统的补充和完善,与原有系统无缝对接、有机结合。本文将主要介绍移动OA系统实现中比较重要的推送技术。
由于wifi、智能终端等技术的成熟,带动了移动互联网的发展,基于计算机的办公自动化模式已经不能够满足企业的需要了,越来越多的企业希望通过智能的移动终端实现随时随地的办公,但是由于移动终端的移动性,如何将企业的紧急通知、最新资讯信息等及时的传达给员工,更好的提高员工的工作效率成为企业关注的重要问题。目前比较流行的消息推送技术可以由服务端主动的发送消息到客户端,因此充分利用消息推送技术的特点,可以更好的实现移动办公。
一、消息推送方式
推送技术(Push Technology)是由服务端向客户端主动发送消息的一种技术。它不用客户发出请求,而是把信息自动的传送给客户,减少客户使用网络搜索信息的时间,主动的为客户提供有价值的信息。消息推送有很多种实现方式,比如:SMS短消息推送、WAP Push、持久连接推送、定时pull方式推送、MMS多媒体信息服务推送等。总的来说是两种方式:自动拉取方式和服务器直接推送方式。
自动拉取方式(pull)主要是根据事先设置好的条件或者时间间隔,在满足条件或者固定的时间间隔后,触发客户端去服务器端获取信息的一种方式。
服务器直接推送方式(push)主要是通过客户端与服务器端建立起连接,不释放并一直保持该连接。当服务器有消息发送时,通过这个连接发送到客户端。
两种方式虽然都可以实现向客户主动的推送信息,但自动拉取的Pull方式需要不断的监听服务器的变化,看是否满足设置的条件,比较消耗移动终端的流量以及电量,相对来说服务器直接推送的Push方式要更好一些。
二、基于Android平台的推送技术实现方案
目前,基于Android平台的,通过push方式实现向客户端推送消息的推送技术实现方案主要有:
方案1:使用C2DM服务,该服务通过在服务器端和各个移动终端保持一个长连接的方式,实现在服务器端主动推送消息到客户端。基于C2DM 服务推送机制受限于google,需注册google账户,必须登陆状态才能实现推送,而且移动设备需使用android2.2以上版本才可以。该方案在国内市场的应用范围很小。
方案2:使用MQTT协议(Message Queuing Telemetry Transport:消息队列遥测传输),该协议是一个轻量级的消息发布/订阅协议,可以使用IBM提供的MQTT的代理RSMB(Really Small Message Broker)实现推送。缺省打开1883端口,应用程序当中,它负责接收来自服务器的消息并将其转发给指定的移动设备。但基于MQTT协议的推送方案不够成熟、实现较复杂,服务器端组件没有开源,成本较高。
方案3:使用XMPP协议(Extensible Messageing and Presence Protocol:可扩展消息与存在协议),该协议的前身是Jabber,是目前比较主流的客户端-服务器-客户端的即时消息协议,服务器-客户端的这个过程就是消息推送的过程。虽然该协议有些复杂,但已经被IETF国际标准组织完成了标准化工作,基于XML的特点也使其具有很强的扩展性,方便使用者进行二次开发或扩展功能,且已有开源的JAVA版的开发实例androidpn。
综合以上三种方案,使用XMPP协议实现移动OA中的推送的可行性比较高,而且有现成的开源的开发实例androidpn,因此,本文主要研究基于XMPP协议推送机制在移动OA系统中的应用。
三、基于XMPP的推送机制在移动OA中的应用
1、移动OA系统框架
移动OA的设计整体架构可分为三部分:移动OA客户端,移动OA服务端,原PC版OA服务端;移动OA与原PC版OA共用一个数据库。移动OA系统的设计框架图如下:
APP软件
图1:移动OA系统的设计框架图
移动OA与PC版OA之间设置有接口,通过PC版OA配置移动OA中的用户等基础信息。客户端与服务器端的交互有两种方式:一种是比较常规的“请求响应”方式,即用户登陆移动OA系统后,通过移动客户端发送请求给移动OA服务器,然后服务器响应客户端请求。另一种是通过服务器端主动推送信息到客户端的方式,即无需客户端发送请求,而是由服务器有消息要推送时,通过推送机制将消息推送到客户端,提醒员工及时的处理自己的工作,以免延误时机。推送服务端与移动OA制作软件 服务端集成一体。移动OA系统的推送机制采用开源的开发实例androidpn。
2、androidpn在移动OA中的应用
androidpn是一个基于XMPP协议的java开源android推送机制的实现。它包含了完整的客户端和服务器端。客户端利用asmack中提供的XMPPConnection类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,同样也是通过这条连接,接收服务器发送的通知。服务器端可以直接安装使用开源服务器openfire,把openfire作为移动OA推送模块的服务端实现方式。基于XMPP协议的推送机制在移动OA系统中应用的框架图如下:
图1:基于XMPP协议的推送机制在移动OA系统中应用的框架图
移动客户端通过XMPP服务器的地址和端口号与服务器建立起来连接,并通过该连接进行用户登陆认证。服务器端有消息要推送时,调用消息推送接口,通过session找到相应的客户端,重新定义和组装XMPP的消息格式,包含客户端的身份认证信息以及消息内容等信息,并将组装好的消息包通过session发送到相应的客户端,在消息包推送到移动客户端之后,移动OA的框架检测到有新消息,通过对消息包进行解析,根据消息包中的客户端身份认证信息将消息包路由到相应的客户端,然后调用消息处理方法对消息进行相关的处理,可以给用户一条提示信息,提醒用户去查看,也可以是显示地提醒用户消息的内容。
四、总结
消息推送技术的特点彰显了移动办公的特性,通过基于XMPP协议的即时消息推送技术,用户可以及时的获取信息,准时高效的处理企业的办公业务。但是基于XMPP协议的推送方案只能推送文本信息,随着移动互联网技术的不断发展,我们还将进一步完善该推送技术在移动办公中的应用。
(北京机械工业自动化研究所 软件开发工程师 李丹锋)