CN105471964A - 用于数据推送的方法、服务器、客户端以及系统 - Google Patents
用于数据推送的方法、服务器、客户端以及系统 Download PDFInfo
- Publication number
- CN105471964A CN105471964A CN201510782803.1A CN201510782803A CN105471964A CN 105471964 A CN105471964 A CN 105471964A CN 201510782803 A CN201510782803 A CN 201510782803A CN 105471964 A CN105471964 A CN 105471964A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- address
- message
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了用于数据推送的方法、客户端、服务器和系统。该方法可包括:服务器接收来自客户端的心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;根据所述心跳包维护所述客户端的在线状态列表和路由表,根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。实施本发明提供的方法、客户端、服务器和系统,能够实时、主动向客户端推送消息,而且方便内存和电池容量有限的移动终端实时接收消息推送。
Description
技术领域
本发明涉及数据处理领域,更为具体而言,涉及一种用于数据推送的方法、服务器、客户端以及系统。
背景技术
现有的金融信息服务系统(例如,申请号为201210516668.2的专利申请),需要用户通过客户端主动向服务器系统获取信息,时效性低,客户很难实时掌握最新、最及时的相关信息。通过定时轮询来反复查询是否有新数据产生,这种机械的做法不仅需要付出额外的网络流量和系统资源,而且不能保证数据到达的及时性和有效性。如何实现实时主动为用户推送最新的关联信息,成为亟需解决的一个技术问题。
随着智能手机等移动设备的高速普及,用户接入金融信息服务系统的平台逐步从PC平台转移到移动平台,这对金融信息服务系统提出了新的要求。除了确保数据准确快速推送到客户端以外,还需综合考虑移动设备CPU计算能力和内存有限、电池容量小、网速普遍较低、网络流量资费昂贵等多方面因素。现有的基于客户端/服务器的推送方案(例如,RFC3920-ExtensibleMessagingandPresenceProtocol(XMPP):Core,IBM-MQTT_Protocol_Specific-V3.1,CometandReverseAjax:TheNext-GenerationAjax2.0.Apress.ISBN978-1-59059-998-3和申请号为201210087194.4的专利申请),技术实现较为复杂,协议包的冗余问题比较突出,对硬件部署要求较高。如何实现一种轻量级的用于数据推送服务,也成为亟需解决的一个技术问题。
发明内容
为解决上述技术问题,本发明提供了一种用于数据推送的方法、客户端、服务器和系统。
根据本发明实施方式的第一方面,提供了一种用于数据推送的方法,该方法可包括:服务器接收来自客户端的心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;根据所述心跳包维护所述客户端的在线状态列表和路由表,根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。
在本发明的一些实施方式中,所述方法还包括:服务器接收来自客户端的心跳包之前,通过所述客户端登陆所述服务器,向所述服务器注册以生成用户标识,将所述用户标识返回至所述客户端,并在所述服务器的所述在线状态列表中添加所述用户标识。
在本发明的一些实施方式中,所述通过所述客户端登陆所述服务器包括:根据所述客户端中附带的服务器的地址列表将所述客户端的登陆请求发送至所述地址列表中排序第一的地址对应的第一服务器,若所述客户端和所述第一服务器连接成功,则根据预定的负载均衡策略确定所述第一服务器是否为优选服务器,若是优选服务器,则不向所述客户端返回服务器的地址,若不是优选服务器,则将所述登陆请求转发至所述优选服务器,并将所述优选服务器的地址返回给所述客户端以便所述客户端将所述优选服务器的地址保存到所述地址列表中排序第一的位置。
在本发明的一些实施方式中,所述待推送的消息是以下述的数据包结构进行封装:所述数据包包括包标识、版本标识、命令ID、包序号、会话源ID、目标类型、操作ID。
在本发明的一些实施方式中,所述待推送的消息是根据TEA算法进行加密。
在本发明的一些实施方式中,所述根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端包括:根据所述消息中的用户标识在所述在线状态列表中查找所述对应的客户端是否在线,若在线,则在所述路由表中查找所述对应客户端的当前IP地址和端口地址,并根据所述IP地址和端口地址将所述消息推送至对应的客户端。
在本发明的一些实施方式中,所述根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:在所述消息为文本形式且小于预定字节的情形下,根据所述IP地址和端口地址将所述消息推送至对应的客户端。
在本发明的一些实施方式中,所述根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:在所述消息大于或等于预定字节或所述消息包含多媒体信息的情形下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端。
根据本发明实施方式的第二方面,提供了一种客户端,该客户端,可用于向服务器发送心跳包,以便所述服务器根据所述心跳包维护所述客户端的在线状态列表和路由表,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;以及所述客户端,还用于接收所述服务器推送的消息。
在本发明的一些实施方式中,所述客户端,在向服务器发送心跳包之前,还用于向所述服务器发送登陆请求,向所述服务器注册以生成用户标识,并接收所述服务器返回的用户标识。
在本发明的一些实施方式中,所述客户端附带有服务器的地址列表。
在本发明的一些实施方式中,所述客户端登陆所述服务器包括:根据所述地址列表将所述登陆请求发送所述地址列表中排序第一的地址对应的第一服务器,若所述客户端和所述第一服务器连接成功并且所述第一服务器为优选服务器,则不对所述地址列表进行修改,若所述客户端和所述第一服务器连接成功但所述第一服务器不是优选服务器,则将所述优选服务器的地址保存到所述地址列表中排序第一的位置。
根据本发明实施方式的第三方面,提供了一种服务器,所述服务器可用于执行下述处理:在本发明的一些实施方式中,接收来自客户端的心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;根据所述心跳包维护所述客户端的在线状态列表和路由表,根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。
在本发明的一些实施方式中,所述服务器,在接收来自客户端的心跳包之前,接收来自所述客户端的登陆请求,完成客户端的注册以生成用户标识,并将所述用户标识返回至所述客户端,并在所述在线状态列表中添加所述用户标识。
在本发明的一些实施方式中,所述服务器接收来自所述客户端的登陆请求包括:通过所述服务器中的第一服务器接收来自所述客户端的登陆请求,若所述第一服务器和所述客户端连接成功,则根据预定的负载均衡策略确定所述第一服务器是否为优选服务器,若是优选服务器,则不向所述客户端返回服务器的地址,若不是优选服务器,则将所述登陆请求转发至所述优选服务器,并将所述优选服务器的地址返回给所述客户端以便所述客户端将所述优选服务器的地址保存到所述地址列表中排序第一的位置。
在本发明的一些实施方式中,所述待推送的消息是以下述的数据包结构进行封装:所述数据包包括包标识、版本标识、命令ID、包序号、会话源ID、目标类型、操作ID。
在本发明的一些实施方式中,所述待推送的消息是根据TEA算法进行加密。
在本发明的一些实施方式中,所述服务器根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端包括:根据所述消息中的用户标识在所述在线状态列表中查找所述对应的客户端是否在线,若在线,则在所述路由表中查找所述对应客户端的当前IP地址和端口地址,并根据所述IP地址和端口地址将所述消息推送至对应的客户端。
在本发明的一些实施方式中,所述服务器根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:在所述消息为文本形式且小于预定字节的情形下,根据所述IP地址和端口地址将所述消息推送至对应的客户端。
在本发明的一些实施方式中,所述服务器根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:在所述消息大于或等于预定字节或所述消息包含多媒体信息的情形下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端。
根据本发明实施方式的第四方面,提供了一种用于数据推送的系统,所述系统可包括上述的服务器和客户端。
实施本发明提供的用于数据推送的方法、客户端、服务器和系统,能够实现实时、主动向客户端推送信息,而且可以减少客户端和服务器之间的通讯的网络流量,方便CPU和内存有限、电池容量小的移动终端能够实时接收数据推送。
附图说明
图1是根据本发明一种实施方式的用于数据推送方法的流程示意图;
图2是根据本发明一种实施方式的登陆流程示意图;
图3是根据本发明一种实施方式的心跳流程示意图;
图4是根据本发明一种实施方式的XLPP协议框架示意图;
图5是根据本发明一种实施方式的用于数据推送的整体流程示意图;
图6是根据本发明一种实施方式的用于数据推送的系统的结构示意图。
具体实施方式
以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。
参见图1,图1是根据本发明一种实施方式的用于数据推送方法的流程示意图,该方法可包括:
S101,服务器接收来自客户端的心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;
S102,根据所述心跳包维护所述客户端的在线状态列表和路由表,
S103,根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。
在本发明的实施方式中,服务器可包括多个服务器,例如,接入服务器、消息推送服务器、消息服务器以及负载均衡服务器,这些服务器可以通过集群的形式向客户端提供服务。客户端可以是以手机、平板电脑等便携式终端设备为载体的应用程序。
本发明的用于数据推送方法,可包括:步骤S101,服务器接收来自客户端的心跳包,其中,所述心跳包可包括:客户端的当前IP地址、端口地址和用户标识。其中,用户标识uid是通过用户主动登陆客户端获取的。也就是说,在步骤S101之前,本发明的用于数据推送的方法还包括用户主动登陆客户端的步骤。具体而言,包括:用户主动登陆客户端,在登陆时,提供用户名和密码,然后客户端将用户名和密码以超文本安全传输协议(HyperTextTransferProtocolSecure,HTTPS)请求的形式上送到负载均衡服务器,负载均衡服务器使用最小链接和源地址会话保持的负载均衡策略,将客户端的登陆请求分发到接入服务器。接入服务器校验该用户的合法性,并将校验通过的用户的信息发送至消息推送服务器注册。生成唯一的用户标识uid,在维护的用户在线列表中添加(用户标识-uid)的映射关系项,并把该uid返回给客户端,作为该用户的标识信息。
用户通过客户端的登陆过程步骤可包括:通过客户端连接到接入定位确定的接入服务器,并在该接入服务器上进行审核处理。需要说明的是,本发明的客户端上附带服务器的IP地址列表。在通过客户端的登陆过程中,如图2所示,客户端首先连接该IP地址列表中的第一IP地址(第一IP地址为IP地址列表中排序第一的IP地址,第二IP地址以此按顺序类推)对应的第一服务器,向第一服务器发送登陆请求,如果客户端和服务器连接失败(例如,繁忙中无应答,或者网络不可达),则连接IP地址列表中的第二IP地址对应的第二个服务器;如果客户端和服务器连接成功,则根据预定的负载均衡策略判断本服务器是否为优选服务器(例如,最优服务器),若是,则不向客户端返回服务器的地址,也就是说,客户端附带的服务器IP地址列表中的第一IP对应的服务器就是优选服务器,不需要对服务器IP地址列表进行修改,若本服务器不是最优服务器,则将客户端的请求转发给最优服务器,并将该最优服务器的IP地址保存到该客户端的服务器IP地址列表中排序第一的位置。该IP地址列表中排序第一的IP地址的服务器作为下次客户端登陆首先尝试的服务器。
在步骤S101中,来自客户端的心跳包是以用户数据报协议(UserDatagramProtocol,UDP)方式进行发送,同样经过负载均衡服务器,根据轮询策略和源地址会话保持分发到接入服务器集群中的一台接入服务器。服务器在接收到心跳包之后,执行步骤S102,根据所接收的心跳包对该客户端的在线状态列表和路由表进行维护,如果该客户端的在线状态信息和路由地址有变化,则更新该客户端的在线状态列表和路由表中的信息。例如,如图3所示,接收心跳包的接入服务器通过其心跳管理模块解析心跳包,获取该客户端的用户标识uid、客户端的当前IP地址和端口地址,并根据本次心跳包的接收时间更新心跳列表中的客户端心跳时间,并根据心跳包解析获取的信息更新消息推送服务器中客户端的路由表中该客户端的IP地址和端口(Port)地址信息。如果心跳管理模块检测到心跳超时,则从用户在线状态列表中删除该用户标识uid。本发明在客户端和服务器之间通过心跳包建立伪连接,能够实现服务器实时、主动向用户推送消息,保证了推送消息到达的及时性和有效性。
本发明的数据推送方法还可包括步骤S103。在步骤S103中,服务器根据其所维护的在线状态列表和路由表将待推送的消息推送至对应的客户端。其中,待推送的消息是通过超轻量推送协议(eXtremelyLightweightPushProtocol,XLPP)进行推送。XLPP是本发明提供的一种支持客户端和服务器之间进行用户身份认证、用户登录和消息推送服务的协议,它可适用于轻量级的信息推送。需要说明的是,虽然上述的步骤S101、S102和S103是按照一定的顺序进行描述,但在具体的信息推送过程中,并不一定必须接收到某一客户端的心跳包之后,才能向该客户端推送信息。其中步骤S101和S102的心跳检测过程是客户端和服务器之间持续不间断执行的信息交互操作,步骤S103是服务器一侧有信息需要推送时执行的操作。
XLPP建立在UDP协议之上,UDP数据包中的第一个字符06为本协议族的标识。服务器使用80号端口,XLPP使用端口没有限制,默认用3330。XLPP是以请求-响应模式工作。也就是说,客户端发出一个请求,服务器端会给出一个相应的响应;服务器向客户端发送信息,客户端也会给服务器相应的响应。请求和响应通过相同的序列号来进行配对(请求代码也应该相同)。
XLPP框架协议主要建立在UDP基础上,同时也使用了传输控制协议(Transmissioncontrolprotocol,TCP)协议。图4示出了XLPP协议的框架,整个协议分为通讯层与应用层两层,通讯层对上层透明的实现数据网络传输。应用层协议实现系统的业务逻辑,等待结果包实现超时重传。通讯层协议:发送应用层数据报,接收网络数据并投递给应用层;应用层协议:处理核心业务。包结构可如表1所示。
表1
在表1所示的包结构中,Flags:长度为1bytes的XLPP包标识,0xF0表示服务器主动发包,0xF1表示服务器应答,0xF2表示客户端请求,0xF3表示客户端应答。Ver:长度为2bytes,版本标识。CmdID:长度为2bytes,命令ID。Seq:长度为2bytes,自增长的包序号,应用层包唯一标识,用于应用层重发和应答包识别。SourceID:长度为4bytes,会话源ID,用于识别会话源,客户端为客户端ID,服务器端为0。DestType:长度为1bytes,目标类型。DestinationID:长度为4bytes,操作目标ID。Data:长度不定,该字段为待封装的数据。Len:长度不定,该字段为待封装数据的长度。
在XLPP协议下,数据包的数据长度是不定的,所以使用填充算法和交织算法对数据进行处理。如果待加密的数据的长度不是8的倍数,那么需要使用填充算法进行填充使其长度为8的倍数,以字节为单位。填充算法:待加密数据加上8个字节再加上填充字符数应该是8的倍数(至少填充2个字节)。填充后的字符串是这样组织的:第一个字节,为填充字符数减2OR(逻辑或运算)上0xA8;后面是填充字节;然后是待加密的数据,最后是7个0。填充字节使用随机的填充字符串。接收数据方根据解密后数据体的最后是否7个零来判断是否正确的解密。交织算法:第一个64bits块,按照一般的TEA加密。下一个64bits块与上一个64bits块的加密结果XOR(逻辑异或运算)生成待加密数据,然后与上一个64bits块的待加密数据XOR生成加密结果。
服务器将加密后并且封装后的待推送消息推送至客户端的步骤可包括:消息服务器发起消息推送,然后,消息服务器根据轮询的负载策略将消息推送到消息推送服务器集群中的一台消息推送服务器。该台消息推送服务器接收到消息服务器发送的消息后,根据消息中的用户标识uid,查找所维护的在线状态列表中的用户标识,若查找到该用户标识,也就是说,该用户的客户端在线,则在所维护的路由表中查找该用户的客户端的当前IP地址和端口地址,并根据查找到的IP地址和端口地址将消息推送给该客户端。在根据IP地址和端口地址将消息推送到客户端的过程中,还可包括:根据待推送消息的类型和大小确定推送的消息内容。具体而言,在消息为文本形式且小于预定字节的情形下,根据IP地址和端口地址将该文本消息推送至对应的客户端。在消息大于或等于预定字节或消息包含多媒体信息的情形下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端,然后由用户根据需要确定是否要向服务器索要相应的推送消息。其中,预定字节可根据应用需要进行设定,例如,可设置为520字节、480字节、360字节、650字节等等。
本发明提供的基于XLPP协议的客户端和服务器的通讯,简化了客户端和服务器之间的通讯过程,精简每次通讯报文的内容,减少了不必要的数据传输,这样的轻量、简洁的特性减少了信息推送过程中的无效流量。因此,可减少客户端和服务器之间通讯时的网络流量,降低客户端一侧上移动终端的计算成本,也使得本发明对于移动设备CPU计算能力和内存有限、电池容量小、网络较低、网络流量资费较高的移动应用场景而言尤为适用。
下面参见图5描述本发明的一种具体的实施例。在图5中,客户端是安装在手机中,服务器可包括负载均衡服务器、接入服务器集群、消息推送服务器集群和消息服务器。
步骤(1),客户在首次使用客户端时,通过客户端登陆,登陆时,输入用户名和密码,由于涉及用户的涉及用户的敏感信息,故登录使用https协议。
步骤(2),客户端的请求都通过负载均衡服务器,根据负载均衡策略,分发到就服务器集群中一台接入服务器。负载均衡使用最小链接策略,并使用源地址会话保持。
步骤(3)和(4),接入服务器校验用户合法性,对于校验通过的用户,向消息推送服务器注册。生成唯一的用户标识uid,在客户端的在线状态列表中添加(用户标识-uid)的映射关系项,并把uid返回给客户端。至此,登录步骤完成。
步骤(5),客户端登录成功,获取到用户标识uid后,开始周期性向服务器一侧发送心跳包。心跳包使用XLPP协议。
步骤(6),客户端发来的心跳包同样经过负载均衡服务器,根据轮询策略和源地址回话保持分发到接入服务器集群中一台接入服务器。
步骤(7),接入服务器解析心跳包,维护客户的在线状态列表以及路由表(该路由表中包括:客户端的用户标识、客户端当前的IP地址及端口地址),如果客户在线状态或IP地址发生变化,接入服务器将相应变更内容通知消息推送服务器。
步骤(8)需要推送的消息保存在消息服务器,实时消息体产生后,由消息服务器根据软负载策略推送到消息推送服务器集群中的一台消息推送服务器上。
步骤(9)到(12)消息推送服务器收到消息服务器发送过来的消息后,根据消息中的用户标识uid,查找本地用户列表中该用户的客户端是否在线,如果在线,则在路由表中查找该用户当前的ip地址和端口地址,然后通过XLPP协议把消息推送到客户端。推送可分两种情况处理:当消息内容为纯文本,且消息内容小于520字节时,消息内容通过消息推送服务器直接推送到客户端;当文本消息内容大于520字节,或消息体为其他多媒体信息时,消息推送服务器只推送消息通知,客户端收到消息通知后去消息服务器拉取消息体。
参见图6,图6是根据本发明一种实施方式的用于数据推送的系统的结构示意图,该系统600可包括客户端601和服务器602,其中,
客户端601,用于向服务器602发送心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;
服务器602,用于接收来自客户端601的心跳包,根据所述心跳包维护所述客户端的在线状态列表和路由表,根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。
在本发明的实施方式中,服务器602可包括多个服务器,例如,接入服务器、消息推送服务器、消息服务器以及负载均衡服务器,这些服务器可以通过集群的形式向客户端提供服务。客户端601可以是以手机、平板电脑等便携式终端设备为载体的应用程序。
客户端601向服务器602发送心跳包,其中,所述心跳包可包括:客户端的当前IP地址、端口地址和用户标识。其中,用户标识uid是通过用户主动登陆客户端获取的。也就是说,客户端601在发送心跳包之前,还需要进行登录操作。具体而言,包括:用户主动登陆客户端,在登陆时,提供用户名和密码,然后客户端将用户名和密码通过HTTPS请求的形式上送到负载均衡服务器(服务器602中用于进行负载均衡的服务器),负载均衡服务器使用最小链接和源地址会话保持的负载均衡策略,将客户端的登陆请求分发到接入服务器。接入服务器校验该用户的合法性,并将校验通过的用户的信息发送至消息推送服务器注册。生成唯一的用户标识uid,在维护的用户在线列表中添加(用户标识-uid)的映射关系项,并把该uid返回给客户端,作为该用户的标识信息。
客户端601的登陆步骤可包括:通过客户端连接到接入定位确定的接入服务器(服务器601中用于进行接入处理的服务器),并在该接入服务器上进行审核处理。需要说明的是,本发明的客户端601上附带服务器的IP地址列表。在通过客户端的登陆过程中,如图2所示,客户端首先连接该IP地址列表中的第一IP地址(第一IP地址为IP地址列表中排序第一的IP地址,第二IP地址以此按顺序类推)对应的第一服务器,向第一服务器发送登陆请求,如果客户端和服务器连接失败(例如,繁忙中无应答,或者网络不可达),则连接IP地址列表中的第二IP地址对应的第二个服务器;如果客户端和服务器连接成功,则根据预定的负载均衡策略判断本服务器是否为优选服务器(例如,最优服务器),若是,则不向客户端返回服务器的地址,也就是说,客户端附带的服务器IP地址列表中的第一IP对应的服务器就是优选服务器,不需要对服务器IP地址列表进行修改,若本服务器不是最优服务器,则将客户端的请求转发给最优服务器,并将该最优服务器的IP地址保存到该客户端的服务器IP地址列表中排序第一的位置。该IP地址列表中排序第一的IP地址的服务器作为下次客户端登陆首先尝试的服务器。
客户端601的心跳包是以用户数据报协议UDP方式进行发送,同样经过负载均衡服务器,根据轮询策略和源地址会话保持分发到接入服务器集群中的一台接入服务器。例如,如图3所示,接收心跳包的接入服务器通过其心跳管理模块解析心跳包,获取该客户端的用户标识uid、客户端的当前IP地址和端口地址,并根据本次心跳包的接收时间更新心跳列表中的客户端心跳时间,并根据心跳包解析获取的信息更新消息推送服务器中客户端的路由表中该客户端的IP地址和端口(Port)地址信息。如果心跳管理模块检测到心跳超时,则从用户在线状态列表中删除该用户标识uid。本发明在客户端和服务器之间通过心跳包建立伪连接,能够实现服务器实时、主动向用户推送消息,保证了推送消息到达的及时性和有效性。
服务器602根据客户端的在线状态列表和路由表将待推送的消息推送至对应的客户端601。其中,待推送的消息是通过超轻量推送协议(eXtremelyLightweightPushProtocol,XLPP)进行推送。XLPP是本发明提供的一种支持客户端和服务器之间进行用户身份认证、用户登录和消息推送服务的协议,它可适用于轻量级的信息推送。
XLPP建立在UDP协议之上,UDP数据包中的第一个字符06为本协议族的标识。服务器使用80号端口,XLPP使用端口没有限制,默认用3330。XLPP是以请求-响应模式工作。也就是说,客户端发出一个请求,服务器端会给出一个相应的响应;服务器向客户端发送信息,客户端也会给服务器相应的响应。请求和响应通过相同的序列号来进行配对(请求代码也应该相同)。
XLPP框架协议主要建立在UDP基础上,同时也使用了传输控制协议。图4示出了XLPP协议的框架,整个协议分为通讯层与应用层两层,通讯层对上层透明的实现数据网络传输。应用层协议实现系统的业务逻辑,等待结果包实现超时重传。通讯层协议:发送应用层数据报,接收网络数据并投递给应用层;应用层协议:处理核心业务。包结构可如表1所示。有关表1的具体描述,可参见上面的方法部分的描述。
在XLPP协议下,数据包的数据长度是不定的,所以使用填充算法和交织算法对数据进行处理。如果待加密的数据的长度不是8的倍数,那么需要使用填充算法进行填充使其长度为8的倍数,以字节为单位。填充算法:待加密数据加上8个字节再加上填充字符数应该是8的倍数(至少填充2个字节)。填充后的字符串是这样组织的:第一个字节,为填充字符数减2OR(逻辑或运算)上0xA8;后面是填充字节;然后是待加密的数据,最后是7个0。填充字节使用随机的填充字符串。接收数据方根据解密后数据体的最后是否7个零来判断是否正确的解密。交织算法:第一个64bits块,按照一般的TEA加密。下一个64bits块与上一个64bits块的加密结果XOR(逻辑异或运算)生成待加密数据,然后与上一个64bits块的待加密数据XOR生成加密结果。
服务器602将加密后并且封装后的待推送消息推送至客户端601可包括:消息服务器(服务器602中用于进行消息处理的服务器)发起消息推送,然后,消息服务器根据轮询的负载策略将消息推送到消息推送服务器集群(服务器602中用于进行消息推送的服务器)中的一台消息推送服务器。该台消息推送服务器接收到消息服务器发送的消息后,根据消息中的用户标识uid,查找所维护的在线状态列表中的用户标识,若查找到该用户标识,也就是说,该用户的客户端在线,则在所维护的路由表中查找该用户的客户端的当前IP地址和端口地址,并根据查找到的IP地址和端口地址将消息推送给该客户端601。在根据IP地址和端口地址将消息推送到客户端601的过程中,还可包括:根据待推送消息的类型和大小确定推送的消息内容。具体而言,在消息为文本形式且小于预定字节的情形下,根据IP地址和端口地址将该文本消息推送至对应的客户端。在消息大于或等于预定字节或消息包含多媒体信息的情形下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端,然后由用户根据需要确定是否要向服务器所要相应的推送消息。其中,预定字节可根据应用需要进行设定,例如,可设置为520字节、480字节、360字节、650字节等等。
本发明实施方式还提供了一种客户端,该客户端可以是上面描述的用于数据推送的系统中的客户端的任意一种实施方式或多种实施方式的组合,在此不再赘述。
本发明实施方式还提供了一种服务器,该服务器可以是上面描述的用于数据推送的系统中的服务器的任意一种实施方式或多种实施方式的组合,在此不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。
Claims (21)
1.一种用于数据推送的方法,其特征在于,所述方法包括:
服务器接收来自客户端的心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;
根据所述心跳包维护所述客户端的在线状态列表和路由表,
根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在服务器接收来自客户端的心跳包之前,通过所述客户端登陆所述服务器,向所述服务器注册以生成用户标识,将所述用户标识返回至所述客户端,并在所述服务器的所述在线状态列表中添加所述用户标识。
3.根据权利要求2所述的方法,其特征在于,所述通过所述客户端登陆所述服务器包括:
根据所述客户端中附带的服务器的地址列表将所述客户端的登陆请求发送至所述地址列表中排序第一的地址对应的第一服务器,
若所述客户端和所述第一服务器连接成功,则根据预定的负载均衡策略确定所述第一服务器是否为优选服务器,若是优选服务器,则不向所述客户端返回服务器的地址,若不是优选服务器,则将所述登陆请求转发至所述优选服务器,并将所述优选服务器的地址返回给所述客户端以便所述客户端将所述优选服务器的地址保存到所述地址列表中排序第一的位置。
4.根据权利要求1所述的方法,其特征在于,所述待推送的消息是以下述的数据包结构进行封装:所述数据包包括包标识、版本标识、命令ID、包序号、会话源ID、目标类型、操作ID。
5.根据权利要求1所述的方法,其特征在于,所述待推送的消息是根据TEA算法进行加密。
6.根据权利要求1所述的方法,其特征在于,所述根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端包括:
根据所述消息中的用户标识在所述在线状态列表中查找所述对应的客户端是否在线,若在线,则在所述路由表中查找所述对应客户端的当前IP地址和端口地址,并根据所述IP地址和端口地址将所述消息推送至对应的客户端。
7.根据权利要求6所述的方法,其特征在于,所述根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:
在所述消息为文本形式且小于预定字节的情形下,根据所述IP地址和端口地址将所述消息推送至对应的客户端。
8.根据权利要求6所述的方法,其特征在于,所述根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:
在所述消息大于或等于预定字节或所述消息包含多媒体信息的情形下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端。
9.一种客户端,其特征在于,所述客户端,用于向服务器发送心跳包,以便所述服务器根据所述心跳包维护所述客户端的在线状态列表和路由表,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;以及
所述客户端,还用于接收所述服务器推送的消息。
10.根据权利要求9所述的客户端,其特征在于,所述客户端,在向服务器发送心跳包之前,还用于向所述服务器发送登陆请求,向所述服务器注册以生成用户标识,并接收所述服务器返回的用户标识。
11.根据权利要求10所述的客户端,其特征在于,所述客户端附带有服务器的地址列表。
12.根据权利要求11所述的客户端,其特征在于,所述客户端登陆所述服务器包括:根据所述地址列表将所述登陆请求发送所述地址列表中排序第一的地址对应的第一服务器,
若所述客户端和所述第一服务器连接成功并且所述第一服务器为优选服务器,则不对所述地址列表进行修改,若所述客户端和所述第一服务器连接成功但所述第一服务器不是优选服务器,则将所述优选服务器的地址保存到所述地址列表中排序第一的位置。
13.一种服务器,其特征在于,所述服务器,用于执行下述处理:
接收来自客户端的心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;
根据所述心跳包维护所述客户端的在线状态列表和路由表,
根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。
14.根据权利要求13所述的服务器,其特征在于,所述服务器,在接收来自客户端的心跳包之前,接收来自所述客户端的登陆请求,完成客户端的注册以生成用户标识,并将所述用户标识返回至所述客户端,并在所述在线状态列表中添加所述用户标识。
15.根据权利要求14所述的服务器,其特征在于,所述服务器接收来自所述客户端的登陆请求包括:通过所述服务器中的第一服务器接收来自所述客户端的登陆请求,若所述第一服务器和所述客户端连接成功,则根据预定的负载均衡策略确定所述第一服务器是否为优选服务器,若是优选服务器,则不向所述客户端返回服务器的地址,若不是优选服务器,则将所述登陆请求转发至所述优选服务器,并将所述优选服务器的地址返回给所述客户端以便所述客户端将所述优选服务器的地址保存到所述地址列表中排序第一的位置。
16.根据权利要求13所述的服务器,其特征在于,所述待推送的消息是以下述的数据包结构进行封装:所述数据包包括包标识、版本标识、命令ID、包序号、会话源ID、目标类型、操作ID。
17.根据权利要求13所述的服务器,其特征在于,所述待推送的消息是根据TEA算法进行加密。
18.根据权利要求13所述的服务器,其特征在于,所述服务器根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端包括:
根据所述消息中的用户标识在所述在线状态列表中查找所述对应的客户端是否在线,若在线,则在所述路由表中查找所述对应客户端的当前IP地址和端口地址,并根据所述IP地址和端口地址将所述消息推送至对应的客户端。
19.根据权利要求18所述的服务器,其特征在于,所述服务器根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:
在所述消息为文本形式且小于预定字节的情形下,根据所述IP地址和端口地址将所述消息推送至对应的客户端。
20.根据权利要求18所述的服务器,其特征在于,所述服务器根据所述IP地址和端口地址将所述消息推送至对应的客户端包括:
在所述消息大于或等于预定字节或所述消息包含多媒体信息的情形下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端。
21.一种用于数据推送的系统,其特征在于,所述系统包括:服务器和客户端,其中,
所述客户端为权利要求9至12所述的客户端,以及
所述服务器为权利要求13至20所述的服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510782803.1A CN105471964B (zh) | 2015-11-16 | 2015-11-16 | 用于数据推送的方法、服务器、客户端以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510782803.1A CN105471964B (zh) | 2015-11-16 | 2015-11-16 | 用于数据推送的方法、服务器、客户端以及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105471964A true CN105471964A (zh) | 2016-04-06 |
CN105471964B CN105471964B (zh) | 2019-02-01 |
Family
ID=55609227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510782803.1A Active CN105471964B (zh) | 2015-11-16 | 2015-11-16 | 用于数据推送的方法、服务器、客户端以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105471964B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105933213A (zh) * | 2016-06-24 | 2016-09-07 | 腾讯科技(深圳)有限公司 | 一种聊天消息的处理方法、相关设备和系统 |
CN106060594A (zh) * | 2016-05-25 | 2016-10-26 | 武汉斗鱼网络科技有限公司 | 一种基于播放器心跳的白名单生成系统及方法 |
CN106899493A (zh) * | 2017-02-22 | 2017-06-27 | 广东网金控股股份有限公司 | 基于UDP与Https实现的消息推送方法及其装置 |
CN107426081A (zh) * | 2017-04-18 | 2017-12-01 | 贵阳朗玛信息技术股份有限公司 | 一种实时消息传输方法及系统 |
CN107634891A (zh) * | 2016-07-18 | 2018-01-26 | 珠海学友教育科技有限公司 | 一种广域网跨度下的分布式云计算平台的动态组织方法 |
CN107948243A (zh) * | 2017-10-25 | 2018-04-20 | 广州迅领科技有限公司 | 一种物联网通信方法、终端及系统 |
CN108073444A (zh) * | 2016-11-18 | 2018-05-25 | 北京京东尚科信息技术有限公司 | 向客户端推送用户数据的方法及系统 |
CN109635187A (zh) * | 2018-11-26 | 2019-04-16 | 平安科技(深圳)有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
CN109981810A (zh) * | 2019-03-08 | 2019-07-05 | 福建天泉教育科技有限公司 | 一种路由地址列表更新的方法及系统 |
CN110198269A (zh) * | 2018-04-03 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 分布式机群的路由同步系统、方法及相关装置 |
CN111107039A (zh) * | 2018-10-26 | 2020-05-05 | 北京国双科技有限公司 | 一种基于tcp连接的通信方法、装置及系统 |
WO2022179283A1 (zh) * | 2021-02-26 | 2022-09-01 | 华为技术有限公司 | 推送消息的发送方法、电子设备及可读介质 |
CN115334141A (zh) * | 2022-08-03 | 2022-11-11 | 上海艺赛旗软件股份有限公司 | 一种基于心跳机制的双向数据传输系统、方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594845A (zh) * | 2012-03-29 | 2012-07-18 | 东南大学 | 一种基于xmpp协议的即时消息传输方法 |
CN103020843A (zh) * | 2012-12-05 | 2013-04-03 | 南京财汇智集网络科技发展有限公司 | 一种金融信息交互及推送方法 |
CN104168123A (zh) * | 2014-07-26 | 2014-11-26 | 珠海市君天电子科技有限公司 | 一种数据推送方法、数据服务器、客户端以及系统 |
CN104301203A (zh) * | 2014-09-10 | 2015-01-21 | 腾讯科技(深圳)有限公司 | 一种消息推送方法和设备 |
CN104378399A (zh) * | 2013-08-15 | 2015-02-25 | 腾讯科技(深圳)有限公司 | 一种数据推送方法、平台服务器、客户端以及系统 |
CN104767746A (zh) * | 2015-03-26 | 2015-07-08 | 上海大唐移动通信设备有限公司 | 推送消息接收方法、消息推送方法、客户端及服务器 |
-
2015
- 2015-11-16 CN CN201510782803.1A patent/CN105471964B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594845A (zh) * | 2012-03-29 | 2012-07-18 | 东南大学 | 一种基于xmpp协议的即时消息传输方法 |
CN103020843A (zh) * | 2012-12-05 | 2013-04-03 | 南京财汇智集网络科技发展有限公司 | 一种金融信息交互及推送方法 |
CN104378399A (zh) * | 2013-08-15 | 2015-02-25 | 腾讯科技(深圳)有限公司 | 一种数据推送方法、平台服务器、客户端以及系统 |
CN104168123A (zh) * | 2014-07-26 | 2014-11-26 | 珠海市君天电子科技有限公司 | 一种数据推送方法、数据服务器、客户端以及系统 |
CN104301203A (zh) * | 2014-09-10 | 2015-01-21 | 腾讯科技(深圳)有限公司 | 一种消息推送方法和设备 |
CN104767746A (zh) * | 2015-03-26 | 2015-07-08 | 上海大唐移动通信设备有限公司 | 推送消息接收方法、消息推送方法、客户端及服务器 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106060594A (zh) * | 2016-05-25 | 2016-10-26 | 武汉斗鱼网络科技有限公司 | 一种基于播放器心跳的白名单生成系统及方法 |
CN105933213A (zh) * | 2016-06-24 | 2016-09-07 | 腾讯科技(深圳)有限公司 | 一种聊天消息的处理方法、相关设备和系统 |
CN105933213B (zh) * | 2016-06-24 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 一种聊天消息的处理方法、相关设备和系统 |
CN107634891B (zh) * | 2016-07-18 | 2020-08-18 | 珠海学友教育科技有限公司 | 一种广域网跨度下的分布式云计算平台的动态组织方法 |
CN107634891A (zh) * | 2016-07-18 | 2018-01-26 | 珠海学友教育科技有限公司 | 一种广域网跨度下的分布式云计算平台的动态组织方法 |
CN108073444A (zh) * | 2016-11-18 | 2018-05-25 | 北京京东尚科信息技术有限公司 | 向客户端推送用户数据的方法及系统 |
CN106899493B (zh) * | 2017-02-22 | 2020-04-24 | 广东网金控股股份有限公司 | 基于UDP与Https实现的消息推送方法及其装置 |
CN106899493A (zh) * | 2017-02-22 | 2017-06-27 | 广东网金控股股份有限公司 | 基于UDP与Https实现的消息推送方法及其装置 |
CN107426081A (zh) * | 2017-04-18 | 2017-12-01 | 贵阳朗玛信息技术股份有限公司 | 一种实时消息传输方法及系统 |
CN107948243B (zh) * | 2017-10-25 | 2020-10-16 | 广州迅领科技有限公司 | 一种物联网通信方法、终端及系统 |
CN107948243A (zh) * | 2017-10-25 | 2018-04-20 | 广州迅领科技有限公司 | 一种物联网通信方法、终端及系统 |
CN110198269A (zh) * | 2018-04-03 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 分布式机群的路由同步系统、方法及相关装置 |
CN110198269B (zh) * | 2018-04-03 | 2021-10-08 | 腾讯科技(深圳)有限公司 | 分布式机群的路由同步系统、方法及相关装置 |
CN111107039A (zh) * | 2018-10-26 | 2020-05-05 | 北京国双科技有限公司 | 一种基于tcp连接的通信方法、装置及系统 |
CN109635187A (zh) * | 2018-11-26 | 2019-04-16 | 平安科技(深圳)有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
CN109981810A (zh) * | 2019-03-08 | 2019-07-05 | 福建天泉教育科技有限公司 | 一种路由地址列表更新的方法及系统 |
WO2022179283A1 (zh) * | 2021-02-26 | 2022-09-01 | 华为技术有限公司 | 推送消息的发送方法、电子设备及可读介质 |
CN115334141A (zh) * | 2022-08-03 | 2022-11-11 | 上海艺赛旗软件股份有限公司 | 一种基于心跳机制的双向数据传输系统、方法及装置 |
CN115334141B (zh) * | 2022-08-03 | 2024-08-30 | 上海艺赛旗软件股份有限公司 | 一种基于心跳机制的双向数据传输系统、方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105471964B (zh) | 2019-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105471964A (zh) | 用于数据推送的方法、服务器、客户端以及系统 | |
US11502854B2 (en) | Transparently scalable virtual hardware security module | |
EP3316544B1 (en) | Token generation and authentication method, and authentication server | |
CN103139200B (zh) | 一种Web service单点登录的方法 | |
US11777914B1 (en) | Virtual cryptographic module with load balancer and cryptographic module fleet | |
US20090019520A1 (en) | Systems and Methods for Efficiently Authenticating Multiple Objects Based on Access Patterns | |
US10333908B2 (en) | Transaction-based secure information delivery and assessment | |
CN103179134A (zh) | 基于Cookie的单点登录方法、系统及其应用服务器 | |
US9264432B1 (en) | Automatic proxy device configuration | |
CN103051647B (zh) | 一种会话实现的方法、设备及系统 | |
CN107172001B (zh) | 网站代理服务器的控制方法及装置、密钥代理服务器 | |
CN108040065A (zh) | 网页跳转后的免登录方法、装置、计算机设备和存储介质 | |
CN107465666A (zh) | 一种客户端ip获取方法与装置 | |
CN109327431A (zh) | 处理移动设备上的资源请求 | |
CN107508822A (zh) | 访问控制方法及装置 | |
CN102143131A (zh) | 用户注销方法及认证服务器 | |
CN106899564A (zh) | 一种登录方法和装置 | |
US20070226252A1 (en) | Systems and Methods for Efficiently Clustering Objects Based on Access Patterns | |
CN102724212B (zh) | 稍后阅读服务器实现方法、系统及稍后阅读服务器 | |
US8984616B2 (en) | Efficient routing for reverse proxies and content-based routers | |
US9491156B2 (en) | Connection management method and system for relaying client and backend of server on server side | |
CN103095650B (zh) | 一种适用于瘦客户端的云服务身份认证方法 | |
CN104243522B (zh) | 用于超文本传输协议网络的方法及宽带网络网关 | |
CN106101267A (zh) | 一种跨网段文件传输系统及方法 | |
CN106790150B (zh) | 一种会话保持方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |