用于数据推送的方法、服务器、客户端以及系统的制作方法
【技术领域】
[0001] 本发明涉及数据处理领域,更为具体而言,涉及一种用于数据推送的方法、服务 器、客户端以及系统。
【背景技术】
[0002] 现有的金融信息服务系统(例如,申请号为201210516668.2的专利申请),需要用 户通过客户端主动向服务器系统获取信息,时效性低,客户很难实时掌握最新、最及时的相 关信息。通过定时轮询来反复查询是否有新数据产生,这种机械的做法不仅需要付出额外 的网络流量和系统资源,而且不能保证数据到达的及时性和有效性。如何实现实时主动为 用户推送最新的关联信息,成为亟需解决的一个技术问题。
[0003] 随着智能手机等移动设备的高速普及,用户接入金融信息服务系统的平台逐步从 PC平台转移到移动平台,这对金融信息服务系统提出了新的要求。除了确保数据准确快速 推送到客户端以外,还需综合考虑移动设备CPU计算能力和内存有限、电池容量小、网速普 遍较低、网络流量资费昂贵等多方面因素。现有的基于客户端/服务器的推送方案(例如, RFC 3920-Extensible Messaging and Presence Protocol (XMPP): Core ,IBM-MQTT_ Protocol_Specif ic~V3. I, Comet and Reverse Ajax : The Next-Generation Ajax 2.0 .Apress .ISBN978-1-59059-998-3 和申请号为 201210087194.4 的专利申请),技术实现 较为复杂,协议包的冗余问题比较突出,对硬件部署要求较高。如何实现一种轻量级的用于 数据推送服务,也成为亟需解决的一个技术问题。
【发明内容】
[0004] 为解决上述技术问题,本发明提供了一种用于数据推送的方法、客户端、服务器和 系统。
[0005] 根据本发明实施方式的第一方面,提供了一种用于数据推送的方法,该方法可包 括:服务器接收来自客户端的心跳包,其中,所述心跳包包括:客户端的当前IP地址、端口地 址和用户标识;根据所述心跳包维护所述客户端的在线状态列表和路由表,根据所述在线 状态列表和所述路由表将待推送的消息推送至对应的客户端。
[0006] 在本发明的一些实施方式中,所述方法还包括:服务器接收来自客户端的心跳包 之前,通过所述客户端登陆所述服务器,向所述服务器注册以生成用户标识,将所述用户标 识返回至所述客户端,并在所述服务器的所述在线状态列表中添加所述用户标识。
[0007] 在本发明的一些实施方式中,所述通过所述客户端登陆所述服务器包括:根据所 述客户端中附带的服务器的地址列表将所述客户端的登陆请求发送至所述地址列表中排 序第一的地址对应的第一服务器,若所述客户端和所述第一服务器连接成功,则根据预定 的负载均衡策略确定所述第一服务器是否为优选服务器,若是优选服务器,则不向所述客 户端返回服务器的地址,若不是优选服务器,则将所述登陆请求转发至所述优选服务器,并 将所述优选服务器的地址返回给所述客户端以便所述客户端将所述优选服务器的地址保 存到所述地址列表中排序第一的位置。
[0008] 在本发明的一些实施方式中,所述待推送的消息是以下述的数据包结构进行封 装:所述数据包包括包标识、版本标识、命令ID、包序号、会话源ID、目标类型、操作ID。
[0009] 在本发明的一些实施方式中,所述待推送的消息是根据TEA算法进行加密。
[0010] 在本发明的一些实施方式中,所述根据所述在线状态列表和所述路由表将待推送 的消息推送至对应的客户端包括:根据所述消息中的用户标识在所述在线状态列表中查找 所述对应的客户端是否在线,若在线,则在所述路由表中查找所述对应客户端的当前IP地 址和端口地址,并根据所述IP地址和端口地址将所述消息推送至对应的客户端。
[0011] 在本发明的一些实施方式中,所述根据所述IP地址和端口地址将所述消息推送至 对应的客户端包括:在所述消息为文本形式且小于预定字节的情形下,根据所述IP地址和 端口地址将所述消息推送至对应的客户端。
[0012] 在本发明的一些实施方式中,所述根据所述IP地址和端口地址将所述消息推送至 对应的客户端包括:在所述消息大于或等于预定字节或所述消息包含多媒体信息的情形 下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端。
[0013] 根据本发明实施方式的第二方面,提供了一种客户端,该客户端,可用于向服务器 发送心跳包,以便所述服务器根据所述心跳包维护所述客户端的在线状态列表和路由表, 其中,所述心跳包包括:客户端的当前IP地址、端口地址和用户标识;以及所述客户端,还用 于接收所述服务器推送的消息。
[0014] 在本发明的一些实施方式中,所述客户端,在向服务器发送心跳包之前,还用于向 所述服务器发送登陆请求,向所述服务器注册以生成用户标识,并接收所述服务器返回的 用户标识。
[0015] 在本发明的一些实施方式中,所述客户端附带有服务器的地址列表。
[0016] 在本发明的一些实施方式中,所述客户端登陆所述服务器包括:根据所述地址列 表将所述登陆请求发送所述地址列表中排序第一的地址对应的第一服务器,若所述客户端 和所述第一服务器连接成功并且所述第一服务器为优选服务器,则不对所述地址列表进行 修改,若所述客户端和所述第一服务器连接成功但所述第一服务器不是优选服务器,则将 所述优选服务器的地址保存到所述地址列表中排序第一的位置。
[0017] 根据本发明实施方式的第三方面,提供了一种服务器,所述服务器可用于执行下 述处理:在本发明的一些实施方式中,接收来自客户端的心跳包,其中,所述心跳包包括:客 户端的当前IP地址、端口地址和用户标识;根据所述心跳包维护所述客户端的在线状态列 表和路由表,根据所述在线状态列表和所述路由表将待推送的消息推送至对应的客户端。
[0018] 在本发明的一些实施方式中,所述服务器,在接收来自客户端的心跳包之前,接收 来自所述客户端的登陆请求,完成客户端的注册以生成用户标识,并将所述用户标识返回 至所述客户端,并在所述在线状态列表中添加所述用户标识。
[0019] 在本发明的一些实施方式中,所述服务器接收来自所述客户端的登陆请求包括: 通过所述服务器中的第一服务器接收来自所述客户端的登陆请求,若所述第一服务器和所 述客户端连接成功,则根据预定的负载均衡策略确定所述第一服务器是否为优选服务器, 若是优选服务器,则不向所述客户端返回服务器的地址,若不是优选服务器,则将所述登陆 请求转发至所述优选服务器,并将所述优选服务器的地址返回给所述客户端以便所述客户 端将所述优选服务器的地址保存到所述地址列表中排序第一的位置。
[0020]在本发明的一些实施方式中,所述待推送的消息是以下述的数据包结构进行封 装:所述数据包包括包标识、版本标识、命令ID、包序号、会话源ID、目标类型、操作ID。
[0021 ]在本发明的一些实施方式中,所述待推送的消息是根据TEA算法进行加密。
[0022] 在本发明的一些实施方式中,所述服务器根据所述在线状态列表和所述路由表将 待推送的消息推送至对应的客户端包括:根据所述消息中的用户标识在所述在线状态列表 中查找所述对应的客户端是否在线,若在线,则在所述路由表中查找所述对应客户端的当 前IP地址和端口地址,并根据所述IP地址和端口地址将所述消息推送至对应的客户端。
[0023] 在本发明的一些实施方式中,所述服务器根据所述IP地址和端口地址将所述消息 推送至对应的客户端包括:在所述消息为文本形式且小于预定字节的情形下,根据所述IP 地址和端口地址将所述消息推送至对应的客户端。
[0024] 在本发明的一些实施方式中,所述服务器根据所述IP地址和端口地址将所述消息 推送至对应的客户端包括:在所述消息大于或等于预定字节或所述消息包含多媒体信息的 情形下,根据所述IP地址和端口地址将所述消息的消息通知推送至对应的客户端。
[0025] 根据本发明实施方式的第四方面,提供了一种用于数据推送的系统,所述系统可 包括上述的服务器和客户端。
[0026] 实施本发明提供的用于数据推送的方法、客户端、服务器和系统,能够实现实时、 主动向客户端推送信息,而且可以减少客户端和服务器之间的通讯的网络流量,方便CPU和 内存有限、电池容量小的移动终端能够实时接收数据推送。
【附图说明】
[0027] 图1是根据本发明一种实施方式的用于数据推送方法的流程示意图;
[0028] 图2是根据本发明一种实施方式的登陆流程示意图;
[0029] 图3是根据本发明一种实施方式的心跳流程示意图;
[0030] 图4是根据本发明一种实施方式的XLPP协议框架示意图;
[0031] 图5是根据本发明一种实施方式的用于数据推送的整体流程示意图;
[0032] 图6是根据本发明一种实施方式的用于数据推送的系统的结构示意图。
【具体实施方式】
[0033]以下结合附图和【具体实施方式】对本发明的各个方面进