基于MQTT Proxy的移动互联网信息推送系统设计

2017-03-06 23:53崔艳萍武国辉阎知知黄龙
软件导刊 2017年1期
关键词:移动互联网

崔艳萍+武国辉+阎知知+黄龙

摘要摘要:紧随“互联网+”发展前沿,研究适用于移动互联网的信息推送技术。对比多种设计方案,基于消息队列遥测传输协议设计信息推送系统。研发了配置安卓操作系统的手机APP客户端、PHP服务器端,数据库使用MySql,在Windows2008 Server环境下搭建代理服务器。设计了连接识别字符串算法、Activity跳转URL算法,并加入了多种可提升用户使用体验效果的功能。从某学校试点推广使用的结果可知,设计方案新颖、方便实用,性能稳定可靠,增强了用户的移动互联网应用体验。

关键词关键词:移动互联网;信息推送;消息队列遥测传输;PHP

DOIDOI:10.11907/rjdk.162138

中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2017)001007105

0引言

移动通信服务已经成为人们日常生活中不可缺少的部分[1]。截至2014年12月,中国网民规模6.49亿,手机网民5.57亿[2],网民平均每天“玩手机”158分钟[3]。面对技术爆炸性变革,“互联网+”战略被提升到了前所未有的高度。移动互联网+通信=即时通信。对于这样的应用模式,大家熟知的有QQ、微信,与传统概念显著的区别在于前者使用的是数据流量业务,而后者使用的是语音业务。信息推送是以互联网、数据挖掘、通信以及自然语言处理等多专业方向相融合的综合性技术。信息推送技术最早由美国PointCastNetwork公司于1996年提出[4]。信息推送服务系统自动将合适的信息推送给合适的人,帮助用户高效率地发掘有价值的信息。在这个信息处理过程中,信息推送服务器是主动方,用户手中的客户端是被动方。很多行业都将它作为重要的网络营销手段之一,例如中国工商银行近期推出的一款理财手机APP软件“融e联”工银信使就是以信息推送技术为基础研发出来的。 1信息推送方案对比

1.1适用于移动互联网的信息推送方案设计原则

具体如下:①安全性,保障用户信息交互和传递安全;②稳定性,保障用户客户端和服务器端的长期可靠运行;③省电省流量,处理冗余数据少,待机开销小;④体积小,不过多占用有限的移动存储空间。1.2轮询信息方案

该方案可以形象地称之为“拉”信息。用户手中的信息推送服务客户端每隔一定的時间与服务器建立一次连发3D版本的训练游戏,可有效提升用户参与度。此外,目前游戏市场所占份额最多的仍属低龄段的语文、数学、外语等主科教学,针对特殊教育等社会应用的游戏案例较少,面向自闭症儿童的3D训练游戏研发可弥补此类需求,在特殊教育机构、医院自闭症专科等部门有广阔的市场。

查询服务器上是否有信息发布出来,如果有就取回并显示到客户端上。这种方案看似简单直接,但是轮询间隔时间很难优化。轮询间隔时间设置太长,信息推送的实时性就很差;而如果这个时间设置太短,势必会增加网络流量和消耗电量,对于移动互联网而言,这是“大忌”。1.3拦截信息方案

移动通信运营商向用户发送短信息,用户的信息推送服务客户端拦截该短信息并将其内容解析出来,根据解析内容跳转访问服务器的指定页面。该方案可以保证信息推送的实时性,技术上问题不大。问题出在实际应用上,一是找不到能够免费发送短消息的移动通信网关,二是实现该方案需要支付给移动运营商的费用无法承受。1.4持久连接信息方案

用户手中的信息推送服务客户端与服务器建立一个持久连接,即使网络中断,连接信息不丢失、资源不回收,网络恢复后仍使用原有资源进行连接,如果连接超时,客户端将立即再次发起连接。该方案可以保证实时性,虽然也会消耗电量和流量,但可以从设计上进行优化,将信息推送损耗降至较低水平,另外还要保证消息一定要能够到达客户端,这个约束对于网络不稳定、终端设备内存资源有限的移动互联网来说至关重要。

对比上述几套方案,选取最后一套方案,基于消息队列遥测传输协议(MQTT)来实现。

源于IBM公司MQTT的设计思想是“发布—订阅”模式。客户端不直接与服务器交互,在两者之间架设代理服务器(Proxy Server),从而做到应用程序与服务程序松耦合。

如图1所示,MQTT协议的基本工作过程是:首先,Proxy Server作为broker角色开启服务,然后客户端与Broker创建连接并长时间维持连接,“订阅”(准备接收特定的信息)已设定好的“主题”(Topic)。接下来,推送服务控制端与Broker创建连接,“发布”(推送特定的信息)已经编辑好的推送信息,该信息一旦“发布”成功,该连接即断开。最后,Broker将该信息推送至客户端,客户端接收成功后将其按照设定好的规则显示出来。

2系统总体设计

信息内容主要包括两种形式,一是信息内容的全部具体信息,另一种形式则是信息的主要内容或者信息目录索引,由接受信息对象按照推送的通知,查询具体信息内容[5]。本系统推送的信息以后者的形式实现。

信息推送服务系统由3个子系统组成,分别是信息推送服务控制端、信息代理服务器、手机APP客户端。

信息推送服务控制端和信息代理服务器运行在同一个物理服务器上。该物理服务器是自购服务器,安装Windows2008 Server操作系统,由第三方数据中心托管,固定国际互联网IP v4地址。管理员从外部接入国际互联网通过浏览器访问该服务器。系统在推广试用阶段数据量不是很大,因此选择性能较稳定,操作和配置都较灵活的MySql数据库[6]。服务控制端使用跨平台的PHP脚本语言开发,管理员用浏览器即可操作,无需安装繁琐的控制软件。

在早些时候,随着MQTT协议的出现,IBM公司为应用该协议,编写了RSMB组件。该组件有多种形式,可运行于Windows、Linux等操作系统,但是它没有考虑用户访问的安全性,并且未开源。在搭建信息代理服务器时,最初选用的也是RSMB组件,进一步完善修改后,最终选用开源的、支持安全访问的Mosquitto组件作为Broker角色来实现信息代理服务。

手机APP客户端基于安卓(Android)操作系统设计。虽然Android 用的是Linux内核[7],使用C、C++开发APP软件效率高,但是信息推送服务主要关注点在应用层,不过多考虑底层的硬件接口、驱动,因此在开发手段上采用基于Java虚拟机的SDK实时运行环境。APP与用户交互的主界面使用Android的Layout相对布局,查看推送信息的详细内容使用WebView组件加载HTML5响应式网页进行浏览。

3信息推送服务控制端设计

管理员登录系统采用Ajax设计理念,更新登录信息输入状态而不刷新页面。

配置信息推送Broker参数的源代码如下:参数值的含义如下:

cishu=0 表示推送最新的信息。

cishu=1 表示推送其次新的信息。

cishu=2 表示推送从时间顺序上排在第3的信息(也就是在历史信息表中第3行的信息)。

cishu=3 表示更早的信息(也就是在历史信息表中第4行的信息)。

以此类推,最大参数为cishu=9,也即本系统可以重新推送以前推送过的10条信息。

(3)填写任意网址,推送的信息将会链接到该网址上。注意网址必须以带问号的参数结尾。

例如http://192.168.1.88/index.asp?mk=9

或者http://192.168.1.66/?t=23

如果没有参数,任意添加一个即可。

4信息代理服务器设计

Broker底层网络协议为TCP/IP,主要函数类包括:消息订阅及发布类、创建、断开连接类、连接状态监测类、日志类等。数据帧头部采用固定格式,2字节(16位),包含信息类型、QoS、信息长度数、标志位等内容。

处理推送信息的服务质量(QoS)设计为3种:①QoS=0,信息最多传送一次,因此信息有可能丢失或者重复推送;②QoS=1,信息最少传送一次,因此信息有可能重复推送,但不会丢失;③QoS=2,信息有且只传送一次,因此信息既不会丢失也不会重复推送。

连接状态模式设计为两种:①cleanSession=true,对应客户端参数Clean_START=true,仅在连接会话的作用域内创建“订阅”和“发布”信息,一旦连接断开,该次“订阅”就会失效,处于该次“订阅”集中的“发布”信息将不会被推送,而新的“订阅”集将会被创建,以后“發布”信息将会对应于这个新的“订阅”集;②cleanSession=false,对应客户端参数Clean_START=false,“订阅”信息是持久的。Broker与客户端之间可以连接,也可以断开,而其“订阅”一直保持活动状态,即“订阅”集保持不变,当Broker与客户端重新连接时,客户端将接收任何未传递的“发布”信息。

5手机APP客户端设计

5.1信息推送显示形式

考虑信息推送的早期雏形,Email发信者将信发送给接收者。当接收者打开浏览器登录到邮箱后,浏览器会自动弹出通知栏,告知接收者已经有几封邮件到达,并显示邮件标题,接收者点击邮件标题即可打开邮件浏览全文。本文系统APP客户端也按这样的思路进行设计。

客户端接收到的信息以图标的形式显示在Android的通知区域(Notification),用户向下滑动该图标,展开Notification,看到信息标题。按照推送信息的接收顺序,用户最多可以看到最新推送来的前5条信息的标题。用户点击其中一条信息的标题,即可查看信息的详细内容。

5.2识别字符串连接算法

不同的连接由不同的连接识别字符串区分,连接识别字符串由两部分构成,即Topic+用户识别码。

Topic按照特定的人群区分:教师群、学生群、领导群、VIP群(在生活或者学业上需要特别照顾帮扶的个别人群)。向教师群推送教务信息,向学生群推送课程资料、考试信息,向领导群推送管理决策信息,向VIP群推送帮扶信息。

Topic相同,必须要有不用的用户识别码。本系统在最初设计时使用Android的系统参数ANDROID_ID,但在实际使用中发现ANDROID_ID有较大的重复概率,因此改用存储在用户手机SIM卡中的国际移动用户识别码(IMSI)[8]。

5.3再次连接间隔时间算法

设Tst为服务开始的时刻,Trval为已设定的初始再次连接间隔时间,Tmaxr为已设定的再次连接最长间隔时间,Tnow为连接断开的时刻,Telap为从服务开始到本次连接断开的时间,Taval为优化后的再次连接间隔时间,则有如下迭代算法:

Telap=Tnow-Tst(1)

Taval=Trval,Telap≥Trval

min(4*Trval,Tmaxr),Telap

将Taval的值保存起来(使用Android便捷的SharedPreference数据存储方式进行保存),下次连接断开时,将其作为新的初始再次连接间隔时间代入算法进行计算。

5.4Activity跳转WebView URl链接算法

客户端调用Android里的WebView组件显示Html5网页内容,WebView组件所在的Activity记为“WebActivity”。客户端跳转到WebActivity有3个来源:①从服务控制端直接输入URL链接地址;②信息标题Activity默认跳转的URl链接地址;③APP主界面默认跳转的URL链接地址。

为了区分上述3种情况,设置了2个字符串变量“biaozhi”和“lianjiedata”,“biaozhi”由程序直接赋值,“lianjiedata”为截取的URL链接字符串。对于第一种情况,从收到的推送信息中根据标识符“,f,”截取,然后在后面加上MISI号参数。因为使用“GET”形式传递参数,URL语法格式必须符合规范,链接地址和参数之间用“?”隔开,多个参数之间用“&”隔开,所以在服务控制端输入连接地址时才有前述特殊要求。对于第二种情况,直接截取默认URL链接字符串http://wuguohui.com/index.php?cishu=0, 对于第三种情况,直接截取默认URL链接字符串http://wuguohui.com/mgq/index.html。

如果“biaozhi”为空,“lianjiedata”不为空,则判断为第一种情况;如果“biaozhi”为空,且“lianjiedata”也为空,则判断为第二种情况;如果“biaozhi”不为空,则判断为第三种情况。

5.5增强用户体验设计

(1)服务启动/停止。在长期的推广使用中,不至于让用户反感,服务设计为可由用户随意开启或者停止。在服务被用户停止或者网络中断期间,如果有信息被推送过来,用户将不能接收。离线推送功能可以保证这些信息在用户再次开启服务或者网络恢复后可以立即被送达用户。

(2)按钮操作语音提示。为了提升用户体验效果,加入按钮操作语音提示功能。用户点击按钮,同时自动播放预先存储的语音提示。为了缩短播放延迟,本系统调用Android的SoundPool类来实现。本系统还设计了一个音频文件加载“监听器”,保证语音提示加载完成之后才能调用SoundPool类,以防止出现加载空值错误。

(3)开机自动启动。本系统“截获”Android启动时发出的系统广播,继承BroadcastReceiver类,重写onReceive方法,当接收到的Intent符合ACTION_BOOT_COMPLETED(即系统广播的内容)时,启动本系统的首个Activity。

6系统调试及运行

6.1参数配置

6.2APP客户端调试

下载APP客户端的apk安装包至Android手机进行安装。安装完成后,打开APP,首先输入用户授权码,只需要输入一次,授权信息将会被保存,再次打开APP,直接运行。APP客户端运行后的界面如图2所示。

7结语

本系统的服务控制权完全在管理者手中,可以统计用户对信息接收情况的反馈(依据设备识别码唯一性),准确掌握用户对信息效果的反应情况。它不仅能做到大面积统一推送,还可以做到定点准确推送。对信息区分各类人群(依据安装不同客户端的主题分类),不同信息有选择地推送给不同的人群。本系统具有操作简单、实用方便、适用广泛、节省网络流量和电池电量的特点,可以推送文字、图片等多种形式,自动提醒用户,只要用户手机可上网,每个用户能够几乎同时实时收到信息,还可以灵活用于发布各种通知、宣传文件精神、发布便民生活消息、转发时事新闻和网页链接、联络人员、休闲娱乐、统计数据等。如果将信息服务质量(QoS)設置为0,本系统可以应用到物联网通信中,例如在智能家居环境下,将传感器监测到的家用机器人的工作状态推送到办公室里的PDA上并显示出来。后续工作还需要美化人机交互界面,形成更加人性化的布局。

图2APP客户端运行界面图3编辑、推送信息

参考文献:

[1]闵庆飞,王菊,刘振华.移动系统可用性综合研究框架[J].计算机应用研究,2012,29(2):421426.

[2]晓丹.CNNIC第35次《中国互联网络发展状况统计报告》中国手机网民达5.57亿[EB/OL].[20150718] http://www.guancha.cn/Science/2015_02_04_308533.shtml.

[3]中国互联网信息中心.CNNIC手机娱乐报告:网民平均每天“玩手机”158分钟[EB/OL].[20150718] http://www.cnnic.net.cn/gywm/xwzx/rdxw/2015/201507/t20150710_52527.htm.

[4]张月天,邬伟,曾欣.当前互联网几种信息推送技术及其评析[J].云南农业大学学报,2009,3(2):115119.

[5]李博,黄芳.信息推送技术在企业中的应用研究[J].电脑知识与技术,2013,9(6):15451547.

[6]蒋黎黎,梁坤,叶爽.基于粒度计算理论的知识融合模型研究[J].计算机应用研究,2012,29(10):36973700.

[7]杨海民,张涛,赵敏,等.基于Android的BSP移植自动适配技术[J].计算机工程,2014,40(11):245249.

[8]何平,肖海,刘兆元,等.LTE终端多模选网关键技术分析[J].电信科学,2012(12):131134.

责任编辑(责任编辑:孙娟)

猜你喜欢
移动互联网
微美学
大数据环境下基于移动客户端的传统媒体转型思路
基于移动互联网的心理健康教育初探