一种向客户端推送消息的方法

文档序号:7779737阅读:396来源:国知局
一种向客户端推送消息的方法
【专利摘要】本发明提供一种向客户端推送消息的方法,包括:一种向客户端推送消息的方法,应用于包括服务器端和客户端的通信系统中,其特征在于,包括:所述客户端创建连接线程的步骤;所述客户端通过所述连接线程与所述服务器建立持久连接的步骤;所述客户端通过所述持久连接向所述服务器注册用户的步骤;所述客户端通过所述持久连接登录所述服务器的步骤;所述服务器通过所述持久连接向所述客户端推送消息的步骤。本发明的向智能客户终端主动推送消息的方法成本低,消耗带宽和电量小,并且消息更新及时。
【专利说明】一种向客户端推送消息的方法
【技术领域】
[0001]本发明涉及一种推送消息的方法,特别是涉及一种向智能客户端及时推送消息的方法。
【背景技术】
[0002]随着使用智能手机的人越来越多,智能手机的处理能力越来越强大,智能手机联网的需求越来越强,尤其是对推送消息的需求越来越强,比如实时更新消息,即时信息分享
坐坐寸寸o
[0003]常见的推送技术方案有如下几种:
[0004]服务器端通过SMS和客户端的通信,这是一个可以实时操作的方案,不过成本较高,因为需要向运营商或者代理购买短消息发送网关。
[0005]客户端定时访问服务器端口,主动定时获取最新消息;这种方案需要考虑主动获取信息的频率,太快则消耗大量的带宽和电量,太慢则导致消息不能及时更新。

【发明内容】

[0006]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种向客户端推送消息的方法,用于解决现有技术成本高,消耗带宽和电量大或消息不能及时更新的问题。
[0007]为实现上述目的及其他相关目的,本发明提供一种向客户端推送消息的方法,包括:一种向客户端推送消息的方法,应用于包括服务器端和客户端的通信系统中,其特征在于,包括:所述客户端创建连接线程的步骤;所述客户端通过所述连接线程与所述服务器建立持久连接的步骤;所述客户端通过所述持久连接向所述服务器注册用户的步骤;所述客户端通过所述持久连接登录所述服务器的步骤;所述服务器通过所述持久连接向所述客户端推送消息的步骤。
[0008]优选地,上述客户端通过所述持久连接登录所述服务器的步骤与所述服务器通过所述持久连接向所述客户端推送消息的步骤之间,还包括所述客户端注册监听器的步骤,所述监听器监听服务器推送的数据包,再通知要进行显示的程序。
[0009]更优选地,根据权利要求1所述的向客户端推送消息的方法,其特征在于,所述客户端通过所述持久连接登录所述服务器的步骤与所述服务器通过所述持久连接向所述客户端推送消息的步骤之间,还包括设置连接监听器的步骤,所述连接监听器用于监听所述持久连接的连接错误。
[0010]如上所述,本发明的向客户端推送消息的方法,具有以下有益效果:向智能客户终端主动推送消息的方法成本低,消耗带宽和电量小,并且消息更新及时。
【专利附图】

【附图说明】
[0011]图1显示为本发明向客户端推送消息的方法所用服务器结构示意图;
[0012]图2显示为本发明向客户端推送消息的方法所用客户端结构示意图;[0013]图3显示为本发明向客户端推送消息的方法流程图。
【具体实施方式】
[0014]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0015]请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0016]本发明的向智能机主动推送消息的方法应用于具有服务器和以智能手机为代表的客户端构成的系统中。下面结合图1和图2对服务器端和客户端的结构和工作过程分别进行介绍。首先参阅图1,服务器端包括三个模块:
[0017]XMPP服务模块,负责与客户端通信,例如用户注册和身份认证,并发送推送通知消息;
[0018]Web服务模块,包括一个HTTP服务器,负责接收用户的Web请求;
[0019]连接管理模块,用于管理Socket连接。
[0020]其中XMPP服务模块包括四个部分:会话(session)管理器,负责管理客户端与服务器之间的会话,比如连接断开,删除session以及建立连接,添加session等等;权限管理器,负责客户端用户认证管理;登录状态管理器,负责管理客户端用户的登录状态,以及通知管理器,负责实现服务器向客户端推送消息功能。
[0021]本例中,连接管理模块及客户端采用了 MINA框架来进行连接管理,由于客户端与服务器的信息往来(包括心跳包)都是通过Session传递的,MINA主要负责XMPP服务模块的session创建、session开启、session关闭、信息收取等客户端与服务器建立Socket连接。
[0022]下面对连接管理模块的主要实现类进行介绍:
[0023]IOAcceptor类:监听指定的端口,处理新的网络连接;一旦一个新的连接到达后,IOAcceptor就产生一个session,后续所有从这个IP和端口发送过来的请求就将通过这个Session被处理。
[0024]PacketEncoder/Decoder类:在Session创建后,负责将后续所有的数据包放入过滤器链中,通过过滤器将原始的字节码转变成高层的对象。最后数据包或对象被传送给Handler做业务逻辑处理;
[0025]下面参阅图2,图2显示为客户端结构框图。本例中,客户端由以下几个模块组成:
[0026]通信模块,负责与服务器建立通信,通过创建3个线程来进行处理。分别负责消息的发送、接收、心跳信息的发送;
[0027]解析模块,主要用来解析XML数据流。根据解析元素不同类型封装成不同的数据对象。
[0028]数据模块,定义整个客户端中大部分的数据类型和对象;[0029]加密模块,对发送和接收的消息进行加解密,以确保通讯数据的安全。
[0030]下面结合图3介绍客户端连接服务器的过程。本例中,使用XMPP协议,所以连接服务器要分为三步:连接,注册,登陆。可以用一个栈来保存要执行的任务,即ConnectTask,RegisterTask, LoginTask,之后各模块再从该栈中领取任务执行,这样就可以使任务得到有序执行。图3中,步骤SI表示服务器端创建通知线程。本例中,客户端的通信模块包括通知服务类,该通知服务类创建一个单线程,让其对服务器进行连接。
[0031]步骤S2表示连接服务器,本例中,连接服务器用的是Executors.newSingleThreadExecutor ()方法,从而可以连续提交任务。
[0032]步骤S3表示注册用户。
[0033]步骤S4表示用户登录,即执行LoginTask。本例中,在LoginTask里,客户端通信模块登陆了服务器端后,注册一个监听器,用于监听服务器push的数据包(Packet),再通过发送广播的方式来通知要进行显示的程序。
[0034]步骤S5表示判断连接是否成功,如果未成功则返回步骤SI重新建立连接。连接线程在连接,注册,登陆的过程中,都有可能出错,都可能会失败,这就需要一种重连的机制。本例中,通过在Androidpn里建立新线程来进行重试,其重试可以按照如下规则:客户端成功连接服务器后,服务器会建立一个唯一 session保持与客户端连接,如果是连接过程出现连接失败,直接返回步骤SI重新建立连接即可;如果是注册、登录过程出现连接失败,则客户端直接带着session ID与服务器进行连接。
[0035]步骤S6表示连接建立成功后,服务器可以随时向客户端推送消息。
[0036]上述步骤中,登陆服务器后,也有可能出错,所以本例中,在登陆后会设置一个连接监听器,用于监听连接出错的时候进行重连。
[0037]另外,在登陆过程中,还可以包括登录错误处理步骤。如果登录出错的原因是账号和密码无效,则应该把客户端本地保存的帐号和密码都清掉,再重新进行连接,否则会永远都登陆不上服务器端。可以通过判断服务器端返回的操作码来判断登录出错的原因,本例中,如果用户名密码无效导致登录操作出错,则服务器返回操作码401。
[0038]需要说明的是,上述实施例虽然基于智能手机作为客户端,但本发明的思想并不局限于此。实际应用中,客户端可以是软件,并且可以安装于多种硬件平台上,比如普通个人电脑、笔记本或者平板电脑等等。
[0039]综上所述,本发明的向智能客户终端主动推送消息的方法成本低,消耗带宽和电量小,并且消息更新及时。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0040]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属【技术领域】中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【权利要求】
1.一种向客户端推送消息的方法,应用于包括服务器端和客户端的通信系统中,其特征在于,包括: 所述客户端创建连接线程的步骤; 所述客户端通过所述连接线程与所述服务器建立持久连接的步骤; 所述客户端通过所述持久连接向所述服务器注册用户的步骤; 所述客户端通过所述持久连接登录所述服务器的步骤; 所述服务器通过所述持久连接向所述客户端推送消息的步骤。
2.根据权利要求1所述的向客户端推送消息的方法,其特征在于,所述客户端通过所述持久连接登录所述服务器的步骤与所述服务器通过所述持久连接向所述客户端推送消息的步骤之间,还包括所述客户端注册监听器的步骤,所述监听器监听服务器推送的数据包,再通知要进行显示的程序。
3.根据权利要求1所述的向客户端推送消息的方法,其特征在于,所述客户端通过所述持久连接登录所述服务器的步骤与所述服务器通过所述持久连接向所述客户端推送消息的步骤之间,还包括设置连接监听器的步骤,所述连接监听器用于监听所述持久连接的连接错误。
4.根据权利要求1所述的向客户端推送消息的方法,其特征在于,所述客户端通过所述持久连接登录所述服务器的步骤中还包括登录错误处理的步骤,所述登录错误处理的步骤包括:如果所述登录错误处理是由于用户名密码错误引发,则清除客户端本地保存的用户名和密码。
5.根据权利要求1所述的向客户端推送消息的方法,其特征在于,所述客户端通过所述持久连接登录所述服务器的步骤与所述服务器通过所述持久连接向所述客户端推送消息的步骤之间,还包括判断所述持久连接是否出错的步骤,如果所述持久连接出错,则执行重连。
【文档编号】H04L12/58GK103618665SQ201310666387
【公开日】2014年3月5日 申请日期:2013年12月10日 优先权日:2013年12月10日
【发明者】苗帅, 郑松, 黄志华 申请人:南京守护宝信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1