消息通信的方法、服务器和系统的制作方法

文档序号:9754403阅读:205来源:国知局
消息通信的方法、服务器和系统的制作方法
【技术领域】
[0001]本发明涉及移动互联网技术领域,特别涉及一种消息通信的方法、服务器和系统。
【背景技术】
[0002]在移动互联网应用中需要构建客户端与服务器进行消息通信的机制,或者多个客户端通过服务器进行消息通信的机制。目前轮询、长连接等消息通信机制广泛应用于各个移动应用中。
[0003]轮询是指客户端定时向服务器发起消息查询的消息通信机制,具体地,客户端在每个查询周期都会向服务器发起消息查询请求,如果服务器没有发送给该客户端的消息,则返回空消息列表,如果有发送给该客户端的消息,则返回该消息。轮询方式的弊端在于消息实时性不强,并且客户端耗电量较大。
[0004]长连接是指服务器和客户端维持一条连接用于收发消息的消息通信机制,具体地,客户端使用Socket连接向服务器发起长连接,客户端和服务器同时维护该连接的状态,所有的消息发送及接收均使用该连接。长连接方式的弊端在于客户端和服务器均需要维护该长连接,业务逻辑复杂。

【发明内容】

[0005]本发明实施例所要解决的一个技术问题是:解决现有消息通信机制存在的消息实时性差、客户端耗电量大以及业务逻辑复杂的问题。
[0006]根据本发明实施例的一个方面,提出一种消息通信的方法,包括:服务器响应于客户端发送的消息查询请求,检查当前是否有发送给所述客户端的消息;如果当前没有发送给所述客户端的消息,服务器将所述客户端的消息查询请求挂起,等待发送给所述客户端的消息;如果当前有发送给所述客户端的消息,服务器释放所述客户端的消息查询请求,并且将所述客户端的消息发送给所述客户端。
[0007]在一个实施例中,服务器将所述客户端的消息发送给所述客户端包括:服务器将所述客户端的消息和表示所述客户端的消息的令牌发送给所述客户端。
[0008]在一个实施例中,消息通信的方法还包括:服务器响应于客户端发送的另一消息查询请求,其中携带一令牌,判断所述另一消息查询请求中携带的令牌是否为最近一次发送给所述客户端的令牌;如果所述另一消息查询请求中携带的令牌是最近一次发送给所述客户端的令牌,服务器释放该令牌对应的消息;如果所述另一消息查询请求中携带的令牌不是最近一次发送给所述客户端的令牌,服务器向客户端重新发送最近一次发送给所述客户端的令牌以及该令牌对应的消息。
[0009]在一个实施例中,消息通信的方法还包括:客户端向服务器发送消息查询请求,并且等待服务器的响应,在接收到服务器的响应之前不再发送消息查询请求。
[0010]在一个实施例中,消息通信的方法还包括:客户端向服务器发送另一消息查询请求,其中携带最近一次接收到的服务器发送的令牌,以表示本客户端已经接收到该令牌对应的消息。
[0011]根据本发明实施例的再一个方面,提出一种消息通信的服务器,包括:消息检查模块,用于响应于客户端发送的消息查询请求,检查当前是否有发送给所述客户端的消息;消息挂起模块,用于如果当前没有发送给所述客户端的消息,将所述客户端的消息查询请求挂起,等待发送给所述客户端的消息;消息发送模块,用于如果当前有发送给所述客户端的消息,释放所述客户端的消息查询请求,并且将所述客户端的消息发送给所述客户端。
[0012]在一个实施例中,消息发送模块包括:请求释放单元,用于如果当前有发送给所述客户端的消息,释放所述客户端的消息查询请求;消息发送单元,在用于将所述客户端的消息发送给所述客户端时,具体用于将所述客户端的消息和表示所述客户端的消息的令牌发送给所述客户端。
[0013]在一个实施例中,消息通信的服务器还包括:令牌判断模块,用于响应于客户端发送的另一消息查询请求,其中携带一令牌,判断所述另一消息查询请求中携带的令牌是否为最近一次发送给所述客户端的令牌;消息释放模块,用于如果所述另一消息查询请求中携带的令牌是最近一次发送给所述客户端的令牌,释放该令牌对应的消息;消息重发模块,用于如果所述另一消息查询请求中携带的令牌不是最近一次发送给所述客户端的令牌,向客户端重新发送最近一次发送给所述客户端的令牌以及该令牌对应的消息。
[0014]根据本发明实施例的又一个方面,提出一种消息通信的系统,包括:上述的服务器和客户端,客户端用于向服务器发送消息查询请求,并且等待服务器的响应,在接收到服务器的响应之前不再发送消息查询请求。
[0015]在一个实施例中,客户端还用于向服务器发送另一消息查询请求,其中携带最近一次接收到的服务器发送的令牌,以表示本客户端已经接收到该令牌对应的消息。
[0016]本发明实施例至少具有以下优点:
[0017]一方面,在客户端发起消息查询请求时,如果没有消息则服务器将客户端的消息查询请求挂起,阻塞客户端的消息线程,防止客户端重复发起查询请求,以减少终端功耗,一旦有客户端的消息,服务器会立即将消息发送给客户端,从而提高消息的实时性,并且,客户端不需要维护连接,因此,降低了客户端业务逻辑的复杂度。
[0018]再一方面,服务器在发送消息的同时会发送一个表示该消息的令牌,客户端发起新的消息查询请求时会携带该令牌,以表明自己接收到了该消息,服务器可以释放该消息,从而节省处理资源;如果新的消息查询请求携带的不是最近一次的令牌,则服务器就会知道上次发送的消息客户端没有接收到,会重新发送一次消息,以保证客户端接收到消息。
【附图说明】
[0019]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0020]图1是本发明消息通信的方法一个实施例的流程示意图。
[0021]图2是本发明消息通信的方法再一个实施例的流程示意图。
[0022]图3是本发明两客户端通过服务器进行消息通信的流程示意图。
[0023]图4是本发明消息通信的系统一个实施例的结构示意图。
[0024]图5是本发明消息通信的服务器一个实施例的结构示意图。
[0025]图6是本发明消息通信的服务器再一个实施例的结构示意图。
【具体实施方式】
[0026]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0027]本发明实施例提出一种新的消息通信机制,以解决现有消息通信机制存在的消息实时性差、客户端耗电量大以及业务逻辑复杂的问题。
[0028]根据本发明实施例的一个方面,提出一种消息通信的方法,参考图1,本实施例的方法包括以下步骤:
[0029]步骤S102,客户端向服务器发送消息查询请求,并且等待服务器的响应,在接收到服务器的响应之前不再发送消息查询请求。
[0030]步骤S104,服务器响应于客户端发送的消息查询请求,检查当前是否有发送给客户端的消息,如果当前没有发送给客户端的消息,执行步骤S106 ;如果当前有发送给客户端的消息,执行步骤S108。
[0031]步骤S106,服务器将客户端的消息查询请求挂起,等待发送给客户端的消息。
[0032]步骤S108,服务器释放客户端的消息查询请求,并且将客户端的消息发送给客户端。
[0033]上述实施例,在客户端发起消息查询请求时,如果没有消息则服务器将客户端的消息查询请求挂起,阻塞客户端的消息线程,防止客户端重复发起查询请求,以减少终端功耗,一旦有客户端的消息,服务器会立即将消息发送给客户端,从而提高消息的实时性,并且,客户端不需要维护连接,因此,降低了客户端业务逻辑的复杂度。
[0034]为了确保客户端接收到消息,本发明实施例提出一种基于令牌实现的消息通信的方法。在图1所示实施例的基础上,步骤S108可以改进为:服务器释放客户端的消息查询请求,并且将客户端的消息和表示该客户端的消息的令牌发送给客户端。其中,令牌可以采用随机算法或其他算法生成,对于令牌的生成方法本发明不做限定。参考图2,本实施例消息通信的方法还包括以下步骤:
[0035]步骤S210,客户端向服务器发送另一消息查询请求,其中携带最近一次接收到的服务器发送的令牌,以表示本客户端已经接收到该令牌对应的消息。
[0036]步骤S212,服务器响应于客户端发送的另一消息查询请求,其中携带一令牌,判断另一消息查询请求中携带的令牌是否为最近一次发送给客户端的令牌,以确定客户端是否接收到服务器最近一次发送给该客户端的消息。
[0037]如果另一消息查询请求中携带的令牌是最近一次发送给客户端的令牌,则服务器可以确定客户端已经接收到服务器最近一次发送给该客户端的消息,则服务器执行步骤S214。如果另一消息查询请求中携带的令牌不是最近一次发送给客户端的令牌,则服务器可以确定由于消息丢失等原因客户端没有接收到服务器最近一次发送给该客户端的消息,则服务器执行步骤S216。
[0038]步骤S214,服务器释放该令牌对应的消息。
[0039]步骤S216,服务器向客户端重新发送最近一次发送给客户端的令牌以及该令牌对应的消息。
[0040]上述实施例,服务器在发送消息的同时会发送一个表TJK该消息的令牌,客户端发起新的消息查询请求时会携带该令牌,以表明自己接收到了该消息,服务器可以释放该消息,从而节省处理资源;如果新的消息查询请求
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1