本申请涉及业务处理技术,具体涉及一种基于长连接的业务请求转发方法及装置。本申请同时涉及一种基于长连接的信息存储方法及装置,一种基于长连接的业务请求方法及装置,以及一种基于长连接的业务处理系统。
背景技术:
随着计算机和互联网技术的发展,基于互联网的各种通信工具,例如微信,QQ等即时通信软件,成为了人们互相交流的主要方式。为了避免频繁地与服务端建立连接、以及方便服务端进行消息的推送,即时通信软件通常都是建立在长连接基础之上的,包括基于websocket协议的通信工具也是如此。
为了保障整个软件系统的有序、安全运行,对于一个通信工具来说,针对客户端发送的业务请求,例如给好友发送消息,服务端通常需要先判定业务请求发起方是谁,即:验证客户端用户的身份,只有当通过验证后才能进一步将客户端发送的消息发送给相应的业务服务端进行处理。
基于上述需求,现有技术通常采用如下处理方式,客户端每次发送业务请求时,同时携带由客户端用户提供的、或者客户端本地存储的身份认证信息,例如:用户名和密码、或者令牌token,接入服务端将接收到的身份认证信息发送给认证服务端,并当认证服务端返回通过身份验证的应答时,接入服务端才能够将业务请求转发给相应的业务服务端。
由此可见,由于基于长连接的客户端在发送业务请求时,每次都带有客户端用户的身份认证信息、并由服务端进行验证,一方面由于多次传输重复的信息,增加客户端流量,占用大量网络带宽,并且由于发送的信息较多,消耗大量客户端时间;另一方面,由于每次都要由接入服务端请求认证服务端对客户端用户的身份进行验证,增大服务端的工作负荷,降低服务端的效率,而为了缓解服务端的压力增加服务端设备的数量、又会造成硬件成本的提升。
技术实现要素:
本申请实施例提供的一种基于长连接的业务请求转发方法,以解决现有长连接客户端重复发送用户认证信息、以及服务端反复进行身份验证导致的浪费网络带宽、效率低下等问题。本申请实施例还提供一种基于长连接的信息存储方法和装置,一种基于长连接的业务请求方法及装置,以及一种基于长连接的业务处理系统。
本申请提供一种基于长连接的业务请求转发方法,包括:
通过长连接接收来自客户端的业务请求;
通过查询预先存储的长连接验证信息集合,判断对应于所述长连接的客户端用户是否已在建立所述长连接时通过认证服务端的身份验证;
若是,至少将所述业务请求发送给相应的业务服务端。
可选的,所述长连接验证信息集合中的每条长连接验证信息,是在建立相应长连接时通过以下步骤生成的:
从长连接建立请求中提取客户端用户的身份认证信息;
向认证服务端发送携带所述身份认证信息的身份验证请求;
接收所述认证服务端返回的至少包括身份验证结果的应答信息,并当所述身份验证结果为通过验证时,存储至少包括所述长连接标识的长连接验证信息。
可选的,所述通过查询预先存储的长连接验证信息集合,判断对应于所述长连接的客户端用户是否已在建立所述长连接时通过认证服务端的身份验证,包括:
根据所述长连接的标识,在预先存储的长连接验证信息集合中,查找对应的长连接验证信息;
若找到,则判定对应于所述长连接的客户端用户已在建立所述长连接时通过所述身份验证。
可选的,所述长连接验证信息集合中的每条长连接验证信息不仅包括长连接标识,还包括:客户端设备信息;
当所述判断操作的结果为是时,还执行下述操作:
从对应于所述长连接的长连接验证信息中,提取所述客户端设备信息;
并在拟发送给所述业务服务端的数据中包括所述客户端设备信息。
可选的,所述长连接验证信息集合中的每条长连接验证信息不仅包括长连接标识,还包括:由认证服务端提供的客户端用户信息;
当所述判断操作的结果为是时,还执行下述操作:
从对应于所述长连接的长连接验证信息中,提取所述客户端用户信息;
并在拟发送给所述业务服务端的数据中包括所述客户端用户信息。
相应的,本申请还提供一种基于长连接的业务请求转发装置,包括:
业务请求接收单元,用于通过长连接接收来自客户端的业务请求;
身份验证判断单元,用于通过查询预先存储的长连接验证信息集合,判断对应于所述长连接的客户端用户是否已在建立所述长连接时通过认证服务端的身份验证;
业务请求转发单元,用于当所述身份验证判断单元的输出为是时,至少将所述业务请求发送给相应的业务服务端。
可选的,所述装置还包括长连接验证信息生成单元;
所述长连接验证信息生成单元,包括:
身份认证信息提取子单元,用于从长连接建立请求中提取客户端用户的身份认证信息;
身份验证请求发送子单元,用于向认证服务端发送携带所述身份认证信息的身份验证请求;
身份验证结果判断子单元,用于接收所述认证服务端返回的至少包括身份验证结果的应答信息,并判断所述身份验证结果是否为通过验证;
长连接验证信息存储子单元,用于当所述身份验证结果判断子单元的输出为是时,存储至少包括所述长连接标识的长连接验证信息。
可选的,所述身份验证判断单元包括:
长连接验证信息查找子单元,用于根据所述长连接的标识,在预先存储的长连接验证信息集合中,查找对应的长连接验证信息;
身份验证判断执行子单元,用于当所述长连接验证信息查找子单元找到对应于所述长连接的长连接验证信息时,判定发起所述业务请求的客户端用户已在建立所述长连接时通过所述身份验证。
可选的,所述装置包括:
客户端设备信息提取单元,用于当所述身份验证判断单元的输出为是时,从对应于所述长连接的长连接验证信息中,提取所述客户端设备信息,并在拟发送给所述业务服务端的数据中包括所述客户端设备信息,随后触发所述业务请求转发单元工作。
可选的,所述装置包括:
客户端用户信息提取单元,用于当所述身份验证判断单元的输出为是时,从对应于所述长连接的长连接验证信息中,提取所述客户端用户信息,并在拟发送给所述业务服务端的数据中包括所述客户端用户信息,随后触发所述业务请求转发单元工作。
此外,本申请还提供一种基于长连接的信息存储方法,包括:
从长连接建立请求中提取客户端用户的身份认证信息;
向认证服务端发送携带所述身份认证信息的身份验证请求;
接收所述认证服务端返回的至少包括身份验证结果的应答信息,并判断所述身份验证结果是否为通过验证;
若是,存储至少包括所述长连接标识的长连接验证信息。
可选的,所述长连接建立请求中还携带:客户端设备信息;
当所述身份验证结果为通过验证时,还执行下述操作:
从所述长连接建立请求中提取客户端设备信息;
并在拟存储的长连接验证信息中包括所述客户端设备信息。
可选的,所述客户端设备信息包括:网络类型、和/或设备型号。
可选的,所述认证服务端返回的应答信息中还包括:认证服务端存储的客户端用户信息;
当所述身份验证结果为通过验证时,还执行下述操作:
从所述认证服务端返回的应答信息中提取所述客户端用户信息;
并在拟存储的长连接验证信息中包括所述客户端用户信息。
可选的,所述客户端用户信息包括:电子邮箱地址、和/或工作单位信息。
可选的,所述方法包括:
当检测到所述长连接断开时,删除已存储的、对应于所述长连接的长连接验证信息。
可选的,所述客户端用户的身份认证信息包括:用户名和密码,或者,用于标识客户端用户身份的令牌。
可选的,所述长连接包括:基于TCP/IP协议的长连接。
相应的,本申请还提供一种基于长连接的信息存储装置,包括:
身份认证信息提取单元,用于从长连接建立请求中提取客户端用户的身份认证信息;
身份验证请求发送单元,用于向认证服务端发送携带所述身份认证信息的身份验证请求;
身份验证结果判断单元,用于接收所述认证服务端返回的至少包括身份验证结果的应答信息,并判断所述身份验证结果是否为通过验证;
长连接验证信息存储单元,用于当所述身份验证结果判断单元的输出为是时,存储至少包括所述长连接标识的长连接验证信息。
可选的,所述装置包括:
客户端设备信息提取单元,用于当所述身份验证结果判断单元的输出为是时,从所述长连接建立请求中提取客户端设备信息,在拟存储的长连接验证信息中包括所述客户端设备信息,并触发所述长连接验证信息存储单元工作。
可选的,所述装置包括:
客户端用户信息提取单元,用于当所述身份验证结果判断单元的输出为是时,从所述认证服务端返回的应答信息中提取所述客户端用户信息,在拟存储的长连接验证信息中包括所述客户端用户信息,并触发所述长连接验证信息存储单元工作。
可选的,所述装置包括:
长连接验证信息删除单元,用于当检测到所述长连接断开时,删除已存储的、对应于所述长连接的长连接验证信息。
此外,本申请还提供一种基于长连接的业务请求方法,包括:
发送长连接建立请求,与接入服务端建立长连接;
通过所述长连接,向接入服务端发送包含业务请求的客户端信息;
其中,仅在所述长连接建立请求中携带客户端用户的身份认证信息。
可选的,在长连接建立请求中还携带客户端设备信息;
向所述接入服务端发送的客户端信息中仅包含所述业务请求。
相应的,本申请还提供一种基于长连接的业务请求装置,包括:
长连接建立请求发送单元,用于发送长连接建立请求,与接入服务端建立长连接;
客户端信息发送单元,用于通过所述长连接,向接入服务端发送包含业务请求的客户端信息;
其中,仅在所述长连接建立请求发送单元发送的长连接建立请求中携带客户端用户的身份认证信息。
此外,本申请还提供一种基于长连接的业务处理系统,包括:根据上述任意一项所述的基于长连接的业务请求转发装置,根据上述任意一项所述的基于长连接的信息存储装置,根据上述任意一项所述的基于长连接的业务请求装置,用于提供身份验证服务的认证服务器,以及用于处理业务请求的业务服务器。
与现有技术相比,本申请具有以下优点:
本申请提供的基于长连接的业务请求转发方法,在通过长连接接收客户端业务请求后,直接查找已存储的长连接验证信息,即可获知对应于所述长连接的客户端用户是否已在建立长连接时通过了身份验证,并在通过验证时,将业务请求转发给相应的业务服务端。
利用本申请提供的上述方法,仅需在建立长连接的时候与认证服务端进行交互,以验证客户端用户的身份,在其他通过长连接接收业务请求的场景下,直接利用已存储的长连接验证信息,进行判断并执行相应的转发操作即可。对于长连接的客户端,由于无需每次都携带客户端用户的身份认证信息,减少数据传输时间以及对网络带宽的占用;对于服务端,可以减少接入服务端和认证服务端之间的交互次数以及对带宽的占用,减轻服务端的工作压力,提高处理效率。
附图说明
图1是本申请的一种基于长连接的信息存储方法的实施例的流程图;
图2是本申请的一种基于长连接的信息存储装置的实施例的示意图;
图3是本申请的一种基于长连接的业务请求转发方法的实施例的流程图;
图4是本申请的一种基于长连接的业务请求转发装置的实施例的示意图;
图5是本申请的一种基于长连接的业务请求方法的实施例的流程图;
图6是本申请的一种基于长连接的业务请求装置的实施例的示意图;
图7是本申请的一种基于长连接的业务处理系统的实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
在本申请中,分别提供了一种基于长连接的业务请求转发方法及装置,一种基于长连接的信息存储方法及装置,一种基于长连接的业务请求方法及装置,以及一种基于长连接的业务处理系统。其中,所述基于长连接的业务请求转发方法以及基于长连接的信息存储方法,通常在接入服务端实施,所述基于长连接的业务请求方法通常在客户端实施。
本申请技术方案的核心在于,在建立长连接的过程中,如果长连接对端的客户端用户通过了认证服务端的身份验证,则存储对应于所述长连接的长连接验证信息;后续接收到来自所述长连接的业务请求后,通过查找已存储的长连接验证信息,即可获知所述长连接的客户端用户已在建立长连接之初通过了身份验证,因此可以直接将业务请求转发给相应的业务服务端。
与现有技术相比较,由于现有技术每次针对来自长连接的业务请求,需要重复执行与认证服务端之间的身份验证交互操作,导致客户端每次发送业务请求时都要携带重复的身份验证信息,而服务端工作负荷大、处理效率低。采用本申请提供的技术方案,通过在建立长连接时存储表征客户端用户已通过身份验证的长连接验证信息,解决了现有技术存在的上述问题,客户端仅需在建立长连接时携带客户端用户的身份验证信息,减少了客户端的数据发送量以及耗时,服务端也无需执行重复的身份验证操作,减轻工作负荷,提高处理效率。
在下面的实施例中,对本申请提供的各方法、装置以及系统逐一进行详细 说明。为了便于理解本申请的技术方案,先对本申请提供的基于长连接的信息存储方法的实施过程进行说明。请参考图1,其为本申请的一种基于长连接的信息存储方法的实施例的流程图,所述方法通常在接入服务端实施。所述方法包括如下步骤:
步骤101、从长连接建立请求中提取客户端用户的身份认证信息。
客户端在与业务服务端交互之前,通常先与接入服务端建立长连接。所述长连接通常是指,能够长期保持连接状态的数据连接,即:客户端与接入服务端在完成一次交互操作后可以不立即释放连接,后续的交互操作仍然可以继续使用这个连接,在没有数据交互的期间,双方可以通过发送链路检测包的方式保持连接状态(即,通常所述的心跳机制)。其中,基于TCP/IP协议的长连接是目前即时通讯软件经常采用的长连接形式。
处于安全性考虑,接入服务端通常需要对客户端用户的身份进行验证,并在验证通过后,才能与客户端建立长连接,因此客户端发送的长连接建立请求中通常会携带客户端用户的身份认证信息,接入服务端在接收到客户端发送的连接建立请求后,从中提取所述身份认证信息。
所述身份认证信息的形式可以有多种,可以是:用户名和密码,也可以是用于标识客户端用户身份的令牌(token—包含时间戳信息的身份认证字符串)。
通常在首次建立长连接时,客户端可以提示用户输入用户名和密码,并将客户端用户输入的相应信息随同长连接建立请求一并发送给接入服务端,由接入服务端转发给认证服务端,并对客户端用户的身份进行验证;在首次利用用户名和密码建立长连接后,服务端(例如:认证服务端)可以为长连接的客户端用户分配一个具有时效限制的令牌,用于标识客户端用户的身份,客户端通常会在本地存储所述令牌,并在需要重新建立长连接时,直接在长连接建立请求中携带所述令牌,从而避免反复让客户端用户输入用户名和密码,影响用户的使用体验。
步骤102、向认证服务端发送携带所述身份认证信息的身份验证请求。
从长连接建立请求中提取客户端用户的身份认证信息后,向认证服务端发送携带所述身份认证信息的身份验证请求,由认证服务端对所述长连接的客户端用户的身份进行验证。
通常客户端用户在利用客户端与服务端进行交互之前,可以先通过注册过 程,向认证服务端提供自己的个人信息,例如:设置用户名、密码、以及其他客户端用户信息,例如:电子邮箱地址、工作单位信息等,注册成功后,认证服务端就会存储这些客户端用户信息,在认证服务端为客户端用户分配token后,也会将token与相应的客户端用户信息对应存储起来。当认证服务端接收到接入服务端发送的身份认证请求后,则会利用已存储的客户端用户信息对身份认证请求中携带的身份认证信息进行验证,如果所述身份认证信息对应于已经注册的有效用户,则返回通过验证应答,否则返回未通过验证应答。
步骤103、接收所述认证服务端返回的至少包括身份验证结果的应答信息,并判断所述身份验证结果是否为通过验证,若是,执行步骤104。
优选地,对于验证通过的情况,认证服务端返回的信息可以不仅包括验证结果,还包括相应的客户端用户信息,也称为认证过的用户信息,包括:电子邮箱地址、工作单位信息等,供接入服务端进行存储,请参见后续步骤104中的相应说明。
步骤104、存储至少包括所述长连接标识的长连接验证信息。
执行到本步骤,说明对应于长连接的客户端用户已通过认证服务端的身份验证,则可以存储对应于所述长连接的长连接验证信息,所述长连接验证信息中至少包括:所述长连接的标识。由于接入服务端通常与众多的客户端保持长连接状态,为了对每条长连接加以区分,可以用预设形式的信息来唯一标识每一条长连接,即:本实施例所述的长连接标识,例如:可以用长连接的客户端端口号与接入服务端端口号的组合作为所述长连接标识。
优选地,如果在客户端发送的长连接建立请求中还携带客户端设备信息,例如:网络类型、设备型号等,那么当所述身份验证结果为通过验证时,还可以从所述长连接建立请求中提取客户端设备信息,一并存储到所述长连接验证信息中,即长连接验证信息中包括:长连接标识以及客户端设备信息。
优选地,如果认证服务端在返回通过验证应答时,还同时返回了客户端用户信息,那么可以从所述认证服务端返回的应答中提取客户端用户信息,一并存储到所述长连接验证信息中,即长连接验证信息包括:长连接标识以及客户端用户信息。
在具体实施中,上述两种优选实施方式可以各自单独应用,也可以结合起来应用,可以将长连接建立请求中携带的客户端设备信息、以及认证服务端返 回的客户端用户信息一并存储到长连接验证信息中能够,即长连接验证信息包括:长连接标识、客户端设备信息、以及客户端用户信息。
接入服务端针对接收到的每个长连接建立请求都采用上述方式进行处理,就会生成包括若干条长连接验证信息的长连接验证信息集合,对于后续来自长连接的业务请求,可以直接在该集合中进行查找、以判断长连接在建立之初是否已通过了对客户端用户身份的验证,从而为减少客户端发送的数据量(无需每次发送身份认证信息)、以及减少服务端之间的交互提供了可能性。
需要说明的是,在具体实施时,如果检测到某长连接断开,则可以删除已存储的、对应于所述已断开的长连接的长连接验证信息。例如:接入服务端在预设时间段内没有接收到来自长连接客户端的心跳数据包,或者虽然接收到心跳数据包,但是在预设时间段内客户端未使用长连接发送任何业务请求,在这两种情况下都可以断开长连接,同时删除对应于该长连接的长连接验证信息,从而实现对长连接验证信息的有效管理,避免占用过多的存储空间。
在上述的实施例中,提供了一种基于长连接的信息存储方法,与之相对应的,本申请还提供一种基于长连接的信息存储装置。请参看图2,其为本申请的一种基于长连接的信息存储装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种基于长连接的信息存储装置,包括:身份认证信息提取单元201,用于从长连接建立请求中提取客户端用户的身份认证信息;身份验证请求发送单元202,用于向认证服务端发送携带所述身份认证信息的身份验证请求;身份验证结果判断单元203,用于接收所述认证服务端返回的至少包括身份验证结果的应答信息,并判断所述身份验证结果是否为通过验证;长连接验证信息存储单元204,用于当所述身份验证结果判断单元的输出为是时,存储至少包括所述长连接标识的长连接验证信息。
可选的,所述装置包括:
客户端设备信息提取单元,用于当所述身份验证结果判断单元的输出为是时,从所述长连接建立请求中提取客户端设备信息,在拟存储的长连接验证信息中包括所述客户端设备信息,并触发所述长连接验证信息存储单元工作。
可选的,所述装置包括:
客户端用户信息提取单元,用于当所述身份验证结果判断单元的输出为是时,从所述认证服务端返回的应答信息中提取所述客户端用户信息,在拟存储的长连接验证信息中包括所述客户端用户信息,并触发所述长连接验证信息存储单元工作。
可选的,所述装置包括:
长连接验证信息删除单元,用于当检测到所述长连接断开时,删除已存储的、对应于所述长连接的长连接验证信息。
此外,本申请还提供一种基于长连接的业务请求转发方法,所述方法通常在接入服务端实施。请参考图3,其为本申请提供的一种基于长连接的业务请求转发方法的实施例的流程图,本实施例与上述方法实施例步骤相同的部分不再赘述,下面重点描述不同之处。本申请提供的一种基于长连接的业务请求转发方法包括:
步骤301、通过长连接接收来自客户端的业务请求。
客户端与接入服务端建立长连接后,客户端可以根据接收到的用户操作将相应的业务请求发送给接入服务端,相应的,本步骤就会接收到该业务请求。
例如:用户在客户端显示的聊天界面中点击下拉箭头,希望看到更多聊天信息时,客户端就会相应地向服务端发送拉取会话的业务请求,接入服务端就会接收到该业务请求。
步骤302、通过查询预先存储的长连接验证信息集合,判断对应于所述长连接的客户端用户是否已在建立所述长连接时通过认证服务端的身份验证;若是,则执行步骤303。
所述长连接验证信息集合包含若干条长连接验证信息,每条长连接验证信息都与处于连接状态的一条长连接相对应,所述长连接验证信息是在建立相应长连接时通过以下步骤生成的:
从长连接建立请求中提取客户端用户的身份认证信息;向认证服务端发送携带所述身份认证信息的身份验证请求;接收所述认证服务端返回的至少包括身份验证结果的应答信息,并当所述身份验证结果为通过验证时,存储至少包括所述长连接标识的长连接验证信息。关于该过程的具体实施方式,已经在之前提供的基于长连接的信息存储方法的实施例中进行了说明,此处不再赘述。
本步骤可以根据接收到业务请求的长连接的标识信息,在预先存储的长连接验证信息集合中,查找对应的长连接验证信息;若找到,则说明该长连接对应的客户端用户已在建立所述长连接时通过身份验证,则无需再经由认证服务端进行重复的身份验证,可以直接执行步骤303,将所述业务请求发送给相应的业务服务端。
在现有技术中,由于接入服务端没有针对通过身份验证的长连接存储长连接验证信息,因此不仅在建立长连接时需要将客户端用户的身份认证信息发送给认证服务端进行验证,而且在每次基于长连接接收到业务请求时,都需要执行同样的身份验证过程,只有通过了身份验证,才能将业务请求转发给相应的业务服务端。采用这种方式,不仅要求客户端每次发送业务请求时携带客户端用户的身份验证信息,而且接入服务端每次都要与认证服务端进行交互,问题的关键在于,客户端在已建立好的长连接上发送业务请求所携带的身份认证信息通常都是相同的,例如:都用存储在客户端本地的令牌token作为所述身份认证信息,因此导致客户端大量发送重复信息,而认证服务端则执行了大量重复的验证操作。
本实施例中的技术方案,由于在建立长连接时存储了长连接验证信息,因此后续通过长连接接收业务请求后,无需再与认证服务端交互,而是通过查询长连接验证信息即可获知长连接对应的客户端用户是否已通过身份验证,并在通过验证的情况下执行转发业务请求的操作。采用这种方式,一方面不要长连接客户端每次在发送业务请求的同时必须携带身份认证信息,可以减少数据传输时间以及对网络带宽的占用,另一方面可以减少接入服务端和认证服务端之间的交互次数以及对带宽的占用,减轻服务端的工作压力,提高处理效率。
步骤303、至少将所述业务请求发送给相应的业务服务端。
本步骤可以根据业务请求的类型进行分流,将业务请求发送给负责处理的相应的业务服务端。例如:业务请求为给好友发送消息,那么可以将该业务请求发送给消息发送服务端,如果业务请求为获取更多聊天信息,可以将该业务请求发送给拉取会话服务端,业务请求为显示好友信息,则可以将该业务请求发送给拉取好友服务端,等等。
优选地,如果在步骤302查找到的长连接验证信息中不仅包括长连接标识,还包括客户端设备信息,则可以从所述长连接验证信息中提取所述客户端设备 信息,并将所述业务请求以及所述客户端设备信息,一起发送给相应的业务服务端,以供业务服务端在处理所述业务请求时参考。例如:根据客户端设备的型号或者平台类型采用相应的消息格式推送消息,从而能够为客户端用户提供更完善的服务。
现有技术中,由于接入服务端没有存储长连接验证信息,也没有存储客户端设备信息,那么为了实现向业务服务端提供客户端设备信息的功能,客户端每次通过长连接向接入服务端发送业务请求时,都需要携带客户端设备信息,然后由接入服务端转发给业务服务端,导致客户端数据传输量增大,占用额外的网络带宽。
而本实施例提供的技术方案,由于接入服务端在长连接验证信息中存储了处于长连接对端的客户端设备信息、并且在向业务服务端转发业务请求时提取所述客户端设备信息一并转发,因此在实现向业务服务端提供客户端设备信息这一功能的基础上,客户端仅需在建立长连接时携带客户端设备信息即可,从而可以减少数据传输量、减少对网络带宽的占用,减少发送数据的耗时。
优选地,如果在步骤302查找到的长连接验证信息中不仅包括长连接标识,还包括由认证服务端提供的客户端用户信息(通常称为认证过的客户端用户信息),则可以从所述长连接验证信息中提取所述客户端用户信息,并将所述业务请求以及所述客户端用户信息,一起发送给相应的业务服务端,以供业务服务端在处理所述业务请求时参考。例如:业务服务端可以根据客户端用户信息对客户端用户进行分类,进行有针对性的处理,或者有针对性地推送信息、提供推荐服务等,从而能够为客户端用户提供更完善的服务。
现有技术中,由于接入服务端没有存储长连接验证信息,也没有存储客户端用户信息,当接入服务端将业务请求转发给相应的业务服务端后,业务服务端为了获取客户端用户信息,通常需要主动去认证服务端拉取客户端用户信息。
而本实施例提供的技术方案,由于接入服务端在长连接验证信息中存储了处于长连接对端的客户端用户信息、并且在向业务服务端转发业务请求时提取所述客户端用户信息一并转发,因此业务服务端无需再次执行从认证服务端拉取客户端用户信息的操作,减少了业务服务端和认证服务端之间的交互,减轻认证服务端的工作压力,同时也提高业务服务端的业务处理效率。
在具体实施中,上述两种优选实施方式可以各自单独应用,也可以结合起 来应用,即,如果长连接验证信息中既包括客户端设备信息、又包括客户端设备信息,则可以提取这两种信息,并与业务请求一并转发给业务服务端,供业务服务端处理业务请求时参考。
至此,通过步骤301-303,对基于长连接的业务请求转发方法的实施方式进行了详细描述。通过上述描述可以看出,采用上述方法,在通过长连接接收到业务请求的场景下,无需调用认证服务端对客户端用户进行身份验证,而是直接利用已存储的长连接验证信息,进行判断并执行相应的转发操作即可,从而可以减少接入服务端和认证服务端之间的交互次数以及对带宽的占用,减轻服务端的工作压力,提高处理效率。
在上述的实施例中,提供了一种基于长连接的业务请求转发方法,与之相对应的,本申请还提供一种基于长连接的业务请求转发装置。请参看图4,其为本申请的一种基于长连接的业务请求转发装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种基于长连接的业务请求转发装置,包括:业务请求接收单元401,用于通过长连接接收来自客户端的业务请求;身份验证判断单元402,用于通过查询预先存储的长连接验证信息集合,判断对应于所述长连接的客户端用户是否已在建立所述长连接时通过认证服务端的身份验证;业务请求转发单元403,用于当所述身份验证判断单元的输出为是时,至少将所述业务请求发送给相应的业务服务端。
可选的,所述装置还包括长连接验证信息生成单元;
所述长连接验证信息生成单元,包括:
身份认证信息提取子单元,用于从长连接建立请求中提取客户端用户的身份认证信息;
身份验证请求发送子单元,用于向认证服务端发送携带所述身份认证信息的身份验证请求;
身份验证结果判断子单元,用于接收所述认证服务端返回的至少包括身份验证结果的应答信息,并判断所述身份验证结果是否为通过验证;
长连接验证信息存储子单元,用于当所述身份验证结果判断子单元的输出为是时,存储至少包括所述长连接标识的长连接验证信息。
可选的,所述身份验证判断单元包括:
长连接验证信息查找子单元,用于根据所述长连接的标识,在预先存储的长连接验证信息集合中,查找对应的长连接验证信息;
身份验证判断执行子单元,用于当所述长连接验证信息查找子单元找到对应于所述长连接的长连接验证信息时,判定发起所述业务请求的客户端用户已在建立所述长连接时通过所述身份验证。
可选的,所述装置包括:
客户端设备信息提取单元,用于当所述身份验证判断单元的输出为是时,从对应于所述长连接的长连接验证信息中,提取所述客户端设备信息,并在拟发送给所述业务服务端的数据中包括所述客户端设备信息,随后触发所述业务请求转发单元工作。
可选的,所述装置包括:
客户端用户信息提取单元,用于当所述身份验证判断单元的输出为是时,从对应于所述长连接的长连接验证信息中,提取所述客户端用户信息,并在拟发送给所述业务服务端的数据中包括所述客户端用户信息,随后触发所述业务请求转发单元工作。
此外,本申请还提供一种基于长连接的业务请求方法,所述方法通常在客户端实施,与实施了上述实施例描述的基于长连接的信息存储方法及业务请求转发方法的接入服务端相互配合,可以达到节省客户端数据流量、减少传输耗时的目的。请参考图5,其为本申请提供的一种基于长连接的业务请求方法的实施例的流程图,本实施例与上述方法实施例步骤相同的部分不再赘述,下面重点描述不同之处。本申请提供的一种基于长连接的业务请求方法包括:
步骤501、发送长连接建立请求,与接入服务端建立长连接。
客户端在发送业务请求之前,通常先与接入服务端建立长连接。在具体实施时,可以遵循相关的协议发送长连接建立请求,例如:采用基于TCP/IP的长连接,则可以遵循TCP/IP协议设定的规范,来实施长连接的建立过程,从而与接入服务端建立长连接。
为了满足服务端对长连接客户端用户进行身份验证的需求,在发送所述长连接建立请求时需要携带客户端用户的身份认证信息,当认证服务端验证通过 后,接入服务端存储针对所述长连接的长连接验证信息。
具体实施时,对于首次建立长连接,可以通过客户端的交互界面提示用户输入用户名和密码,然后在长连接建立请求中携带所述用户名和密码,经过认证服务端验证后,可以接收到由认证服务端分配的、用于标识所述用户身份的令牌(token),客户端可以将令牌存储在本地;后续建立长连接时,则可以在长连接建立请求中携带所述令牌即可。
进一步地,为了向服务端提供客户端设备的相关信息,还可以在长连接建立请求中携带客户端设备信息。相应地,接入服务端会在存储的长连接验证信息中包括所述客户端设备信息。
步骤502、通过所述长连接,向接入服务端发送包含业务请求的客户端信息。
本步骤可以根据接收到的用户操作,通过已建立好的长连接,向接入服务端发送包含业务请求的客户端信息。例如:用户在聊天应用的客户端界面中输入消息,并点击“向好友发送消息”按钮,则客户端可以通过已建立好的长连接,向接入服务端发送“发送消息”这一业务请求。
由于接入服务端在建立所述长连接时已经存储了长连接验证信息,因此在发送给接入服务器的客户端信息中不包括客户端用户的身份认证信息,从而减少客户端发送的数据量。所述客户端信息中可以包括:业务请求,还可以包括其他信息,例如:客户端设备信息。
优选地,如果步骤502建立所述长连接时,在长连接建立请求中携带了客户端设备信息,并且接入服务端在存储对应于所述长连接的长连接验证信息中包括了所述客户端设备信息,那么本步骤发送的客户端信息中可以仅包括业务请求,不包括客户端设备信息,进一步减少客户端发送的数据量。
至此,通过步骤501-502,对本实施例提供的基于长连接的业务请求方法的实施方式进行了说明。由于接入服务端针对接收到的每个业务请求,根据在建立长连接时存储的长连接验证信息,判断相对应的客户端用户是否已通过了身份验证,因此长连接客户端仅需要在建立长连接时携带客户端用户的身份验证信息,此后基于长连接发送业务请求时则不必重复携带该信息,减少客户端发送数据的耗时以及对网络带宽的占用。
在上述的实施例中,提供了一种基于长连接的业务请求方法,与之相对应的,本申请还提供一种基于长连接的业务请求装置。请参看图6,其为本申请的 一种基于长连接的业务请求装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种基于长连接的业务请求装置,包括:长连接建立请求发送单元601,用于发送长连接建立请求,与接入服务端建立长连接;客户端信息发送单元602,用于通过所述长连接,向接入服务端发送包含业务请求的客户端信息;其中,仅在所述长连接建立请求发送单元发送的长连接建立请求中携带客户端用户的身份认证信息。
此外,本申请还提供一种基于长连接的业务处理系统,如图7所示,该系统包括上述实施例所述的基于长连接的信息存储装置701,基于长连接的业务请求转发装置702,基于长连接的业务请求装置703,用于提供身份验证服务的认证服务器704,以及用于处理业务请求的业务服务器705。所述基于长连接的信息存储装置、和所述基于长连接的业务请求转发装置,可以部署于接入服务器,也可以部署在其他能够实现本申请提供的基于长连接的信息存储方法及业务请求转发方法的设备上;所述基于长连接的业务请求装置可以部署于移动通讯设备、个人电脑、PAD、iPad等多种客户端设备。
例如,所述基于长连接的信息存储装置和所述基于长连接的业务请求转发装置部署于接入服务器,所述基于长连接的业务请求装置部署于智能手机上。智能手机向接入服务器发送长连接建立请求,所述请求中携带手机用户的身份认证信息;接入服务器将接收到的身份验证信息发送给认证服务器,并接收认证服务器返回的通过验证应答,然后存储对应于所述长连接的长连接验证信息;智能手机通过建立好的长连接发送业务请求,接入服务端根据长连接标识在预先存储的长连接验证信息集合中找到对应的长连接验证信息,获知所述长连接的客户端用户已经在建立所述长连接时通过了认证服务器的身份验证,因此直接将接收到的业务请求发送给相应的业务服务器。
上述例子仅仅是示意性的,在其他的实施方式中,也可以采用不同的部署方式和实施方式,只要能够实现本申请所述的基于长连接的业务处理系统的整体功能,就都在本申请的保护范围之内。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。