CN114844940A - 一种网络请求方法及相关设备 - Google Patents
一种网络请求方法及相关设备 Download PDFInfo
- Publication number
- CN114844940A CN114844940A CN202210246413.2A CN202210246413A CN114844940A CN 114844940 A CN114844940 A CN 114844940A CN 202210246413 A CN202210246413 A CN 202210246413A CN 114844940 A CN114844940 A CN 114844940A
- Authority
- CN
- China
- Prior art keywords
- network
- session
- session connection
- request
- clearing
- 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.)
- Pending
Links
Images
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/14—Session management
- H04L67/148—Migration or transfer of sessions
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种网络请求方法及相关设备。该方法包括:监听网络状态以获取网络类型;在上述网络类型由第一网络切换为第二网络时,清除session池里所有已连接的session连接;终止正在请求的session连接;创建第二网络下的session连接;基于第二网络下的session连接重新执行当前网络请求,其中,上述当前网络请求为正在请求的session连接对应的网络请求。本方法可以在用户无感知的情况下,快速切换网络,并提高了网络请求的成功率,提升了用户的网络体验度。
Description
技术领域
本说明书涉及通信技术领域,更具体地说,本发明涉及一种网络请求方法及相关设备。
背景技术
对于http请求来说,一般都会创建一个session池来存储已经建立的session连接,从而如果后续有相同域名的请求,可以从session池中筛选出相同域名的session连接进行复用,从而极大的提高网络的请求速度。一个session连接是指一个网络请求从域名解析、到网络连接、到握手协议、到网络请求发送和接收服务器返回数据的整个过程,当一个请求使用完后,此已经建立好的session连接可以放到session池中供后续的网络请求来进行复用。
在这个过程中,当客户端发生网络变化时,现有的已经建立的session连接由于均是基于网络变化前建立的,那么当网络变化后,这些建立好的session连接将变的不可用,会造成网络请求失败,进而发出错误提示信息,需要用户手动操作尝试修复网络,降低了用户的体验度。
且网络请求失败后,如果不做任何处理而继续尝试使用现有的session连接,必然又会继续造成网络请求失败,这样就会增加网络请求的失败率。
发明内容
在发明内容部分中引入了一系列简化形式的概念,这将在具体实施方式部分中进一步详细说明。本发明的发明内容部分并不意味着要试图限定出所要求保护的技术方案的关键特征和必要技术特征,更不意味着试图确定所要求保护的技术方案的保护范围。
为了提升在网络切换时用户的体验度,第一方面,本发明提出一种网络请求方法,上述方法包括:
监听网络状态以获取网络类型;
在上述网络类型由第一网络切换为第二网络时,清除session池里所有已连接的session连接;
终止正在请求的session连接;
创建第二网络下的session连接;
基于第二网络下的session连接重新执行当前网络请求,其中,上述当前网络请求为正在请求的session连接对应的网络请求。
可选的,上述在上述网络类型由第一网络切换为第二网络,之后还包括:
获取上述第二网络的网络类型;
在上述第二网络的网络类型为无网络的情况下,不执行上述终止正在请求的session连接的操作。
可选的,上述监听网络状态以获取网络类型之前还包括:
基于网络请求创建上述正在请求的session连接的链表,其中,上述正在请求的session连接的链表包括上述正在请求的session连接对应的指针;
上述终止正在请求的session连接,包括:
在上述链表中确定上述正在请求的session连接对应的指针为目标指针;
基于上述目标指针终止上述正在请求的session连接。
可选的,上述基于上述目标指针终止上述正在请求的session连接之后还包括:
在上述终止正在请求的session连接操作完成的情况下,将上述目标指针在上述链表中清除。
可选的,上述清除session池里所有已连接的session连接之前还包括:
获取上述session池的清除间隔时长;
上述清除session池里所有已连接的session连接,包括:
在上述清除间隔时长大于或等于预设清除时长的情况下,清除上述session池里的上述已连接的session连接。
可选的,上述获取上述session池的清除间隔时长,包括:
获取一个session连接建立平均时长;
获取session池被清除的平均时长;
基于上述一个session连接建立的平均时长、上述session池被清除平均时长和异步时长确定上述清除间隔时长。
可选的,上述监听网络状态以获取网络类型之前还包括:
基于网络请求创建网络请求队列,其中,上述网络请求队列包括上述当前网络请求;
上述基于第二网络下的session连接重新执行当前网络请求,包括:
将上述网络请求队列中列尾的网络请求调整至上述网络请求队列的列头,以重新执行上述当前网络请求;
上述方法还包括:
基于调整后的上述网络请求队列通过上述第二网络下的session连接依次执行剩余上述网络请求。
第二方面,本发明还提出一种网络请求装置,包括:
第一获取单元,用于监听网络状态以获取网络类型;
清除单元,用于在上述网络类型由第一网络切换为第二网络的情况时,清除session池里所有已连接的session连接;
终止单元,用于终止正在请求的session连接;
创建单元,用于创建第二网络下的session连接;
执行单元,用于基于第二网络下的session连接重新执行当前网络请求,其中,上述当前网络请求为正在请求的session连接对应的网络请求。
第三方面,一种电子设备,包括:储存器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器用于执行存储器中存储的计算机程序时实现如上述的第一方面任一项的网络请求方法的步骤。
第四方面,本发明还提出一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现第一方面上述任一项的网络请求方法。
综上,本申请实施例提出的一种网络请求方法包括:监听网络状态以获取网络类型;在上述网络类型由第一网络切换为第二网络时,清除session池里所有已连接的session连接;终止正在请求的session连接;创建第二网络下的session连接;基于第二网络下的session连接重新执行当前网络请求,其中,上述当前网络请求为正在请求的session连接对应的网络请求。本申请实施例提供的方法通过设置网络状态监控,在网络类型发生改变时,立刻清除第一网络对应的session池,并终止正在请求的session连接,从而避免了在切换网络后在第一网络状态对应的session池中的session连接不可用且正在请求的session连接网络请求超时,而造成网络请求失败,进而发出错误提示信息的情况发生。本方法可以在用户无感知的情况下,快速切换网络,并提高了网络请求的成功率,提升了用户的网络体验度。
本发明的网络请求方法,本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本说明书的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例提供的一种网络请求方法流程示意图;
图2为本申请实施例提供的一种网络请求装置;
图3为本申请实施例提供的一种网络请求电子设备结构示意图。
具体实施方式
本申请实施例提供的方法通过设置网络状态监控,在网络类型发生改变时,立刻清除第一网络对应的session池,并终止正在请求的session连接,从而避免了在切换网络后在第一网络状态对应的session池中的session连接不可用且正在请求的session连接网络请求超时,而造成网络请求失败,进而发出错误提示信息的情况发生。本方法可以在用户无感知的情况下,快速切换网络,并提高了网络请求的成功率,提升了用户的网络体验度。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
请参阅图1,为本申请实施例提供的一种网络请求方法流程示意图,具体可以包括:
S110、监听网络状态以获取网络类型;
示例性的,本申请示例提供的方法,首先监听网络状态来获取网络类型,网络类型可以包括WiFi网络,移动网络,或不确定网络(如:无网络连接)。
具体的监听网络状态可由下述步骤实现:
S1101、设计监控模块将网络类型切换对系统的监控抽象出来,从而可以在不同平台去实现对系统网络类型切换的监控,使得本申请即可用于IOS、安卓和鸿蒙等任意一种操作系统。
Enum NetType{
Wifi_type=0;wifi网络
Mobile_type=1;移动网络
Other_type=2;不确定网络,例如无网络等。
}
S1102:设计一个回调通知功能:
Class CallBack{
Virtual~CallBack(){}
Virtual void networkChange(NetType type)=0;此接口则注册到系统网络状态监听的功能中,当其发现网络类型变化时,则会通过调用的回调来告知网络库。此处使用抽象接口便于后续功能扩展,可以实现不同的网络切换的策略。其中参数用于告知当前的网络类型。}
由于网络切换是一个不确定事件,因此方案通过系统对网络类型的变化来通知网络库,在网络库内部来实现网络切换的功能。而基于网络类型变化控制网络库实现功能切换是一个异步事件,通过设计一个网络通知的回调,从而可以进行异步通知的功能,使用异步通知则性能会更优,而不需要去轮询的去获取当前网络状态。
S1103、设置网络状态监听:
Class NetWorkMonitor{此类是用于监听网络状态。
CallBack cb_;首先有个成员变量存储网络库设置进来的回调指针。
NetWorkMonitor(CallBack*cb){cb_=cb;}在构造函数中存储了回调指针,则赋值到成员变量中进行保存。}
Void checkNetWork(){
cb_(type)};
此函数则是通过调用系统函数来监控当前系统的网络,当网络类型发生变化时,则通过调用注册进来的回调来通知网络库。
此处当前如果是android系统则调用android的系统函数获取网络状态,如果是ios系统则调用ios系统的函数来获取网络状态。
对于网络状态监听,则主要是通过调用系统函数来获取当前的网络类型,当系统感知到网络类型发生变化时,则会调用监听函数来告知,从而在告知函数中则调用上述的回调功能来告知网络库。
S120、在上述网络类型由第一网络切换为第二网络的情况时,清除session池里所有已建立的session连接;
示例性的,在网络状态类型由第一网络转换为第二网络的情况下,即网络类型发生了改变,网络类型发生改变是指由WiFi网络和移动网络的切换,移动网络和无网络的切换,或者可以是不同网络类型之间的切换。此时,本方法不会马上基于当前的session池中再次进行筛选,而是将当前的session池清空,也就是说将第一网络状态下session池中的session连接全部清除。可以通过调用clearSession Pool()完成清除session池工作。
可以理解的是,在目标APP第一次启动时,也会激发一个网络请求,由于网络事件对应的是初始启动,当前session池中也无session连接,因此,此时没有必要进行清除。
在一些实例中,判断网络状态变化的可由下述方法实现:当注册的回调收到网络状态变化消息时,需要对当前网络进行一些策略调整。首先需要实现一个回调功能:
Class HttpCallback public:CallBack{
创建一个类HttpCallback来继承自CallBack,从而实现当前协议的网络策略,如果想实现不同的策略,则可以通过编写不同的类继承自CallBack并实现其中的networkChange方法。本实施例则实现基于http协议的网络策略:
Time lasttime;定义一个成员变量用于记录上次的网络切换时的时刻。
NetType type_;定义一个变量用于记录当前的网络类型。
void networkChange(NetType type){
此函数则实现定义的CallBack的虚接口来完成功能。
Time curr=GetCurrentTime();获取当前的系统时间。}}
S130、终止正在请求的session连接;
示例性的,在网络类型由第一网络切换为第二网络的情况下,通过步骤S120对session池中已连接的session连接进行了清除处理。但在发生网络切换时,如果正好存在正在请求的session连接,那么就需要对正在请求的session连接进行处理,因为正在请求的session连接是基于第一网络请求建立的,而此时网络类型已经由第一网络切换为第二网络了,因此,这些请求都会发生读取服务器数据超时而导致失败。何时判定请求失败依赖于提前设置好的读取超时时间,如果读取超时时间较长,那么所有的请求都会等到该时间结束后才能返回错误信息,并且这些请求也会阻塞后续其他的网络请求,从而给用户造成了当前网络不通的效果。为了避免这种情况发生,需要对正在请求的session连接进行终止处理,从而节省性能消耗并使得后续的网络请求可以顺利进行。因此,在网络状态发生变化时,也就是在上述的这个函数内void networkChange(NetType type)需要进行终止功能定义。
可以理解的是,在网络状态发生改变的情况下,还需要获取网络类型切换时间间隔,考虑网络变化时,可能会在很短的时间间隔内频繁的发送多次相同的网络类型切换,因此需要有一个频率和容错的情况,因此实施例可以设置预设时间间隔,可以选取500毫秒到2000毫秒作为预设时间间隔,如果网络类型切换的时间间隔在预设时间间隔内,则不执行终止操作。
需要说明的是,在网络类型由第一网络切换为第二网络的情况下,步骤S120和步骤S130的可以同时执行,也可以是步骤S120和步骤S130异步执行,其开始执行的顺序和时间在此不做限制。
S140、创建第二网络下的session连接;
示例性的,基于切换网络状态之后的网络类型创建第二网络的session连接。
S150、基于第二网络下的session连接重新执行当前网络请求,其中,上述当前网络请求为正在请求的session连接对应的网络请求。
示例性的,可以理解的是,客户端可能有很多个网络请求需要被执行,且多个网络请求的执行顺序可能需要保持特定的执行顺序,但客户端只能同时进行其中几个网络请求,当前网络请求是指正在进行的网络请求,由于发生了网络切换,正在进行的网络请求时基于第一网络执行的,因此,基于第一网络正在进行的网络请求必然会失败,此时需要基于第二网络连接接口重新执行当前网络请求,以确保网络请求能够按照既定的顺序全部被执行。
综上,本申请实施例提供的方法通过设置网络状态监控,在网络类型发生改变时,立刻清除第一网络对应的session池,并终止正在请求的session连接,从而避免了在切换网络后在第一网络状态对应的session池中的session连接不可用且正在请求的session连接网络请求超时,而造成网络请求失败,进而发出错误提示信息的情况发生。本方法可以在用户无感知的情况下,快速切换网络,并提高了网络请求的成功率,提升了用户的网络体验度。
在一些示例中,上述在上述网络类型由第一网络切换为第二网络,之后还包括:
获取上述第二网络的网络类型;
在上述第二网络的网络类型为无网络的情况下,不执行上述终止正在请求的session连接的操作。
示例性的,如果第二网络类型(当前的网络类型)是无网络,则不进行终止正在请求session连接的操作。因为,如果当前是无网络,网络请求会出现超时,不需要进行任何操作,只需要静待系统重传策略,这样也可以减少不必要的性能消耗。
综上,本申请实施例提供的方法,在当前网络类型是无网络的情况下,不需要进行任何操作,可以减少不必要的性能消耗。
在一些示例中,上述监听网络状态以获取网络类型之前还包括:
基于网络请求创建上述正在请求的session连接的链表,其中,上述正在请求的session连接的链表包括上述正在请求的session连接对应的指针;
上述终止正在请求的session连接,包括:
在上述链表中确定上述正在请求的session连接对应的指针为目标指针;
基于上述目标指针终止上述正在请求的session连接。
示例性的,由于正在请求session连接会频繁的增加和删除,可以通过链表对正在请求的session连接进行管理,正在请求的session连接链表包括正在请求的session连接对应的指针。从而在执行终止的操作时,可以对当前正在请求的线程抛出一个任务,该任务则会遍历正在请求session连接的链表,判断该session连接是否在链表中,如果在链表,则将其进行终止操作,终止操作则是调用session连接的终止接口来完成。可以通过下述代码建立正在请求连接的session连接的链表:
std::list<std::weak_ptr<Session>>reqList_;
使用weak_ptr来存储session连接的指针,由于后续当网络变化时,需要对当前的请求的session连接进行终止操作,而session连接本身是由请求线程创建和持有,则不能够阻碍请求线程对session连接的操作,因此持有的是一个弱引用,那么当前请求完成时,其则可以将其放入到session池,也可以进行销毁,而reqList_并不会增加session连接的引用计数,从而不会造成其无法进行释放。
具体的,可以通过下述代码实现链表的存储和移除正在请求连接的session连接操作:
void addreq(std::shared_ptr<Session>reqExe){编写2个接口用于存储session连接和移除session连接操作。
WriteHolder write(Lock_);对链表进行写锁操作。
reqList_.emplace_back(reqExe);把正在请求的session连接存储在链表中。}
提供一个移除的操作:
void removereq(std::shared_ptr<Session>req){
WriteHolder write(Lock_);对链表操作进行写锁操作。
那么当进行网络请求时,如果当前新创建了session连接或者从session池中取出了一个session连接进行发送请求,那么将其放入到正在请求session连接的链表中(通过调用addreq来加入到活动连接接口链表中),当请求发送完成时,则调用removereq来将其从链表中进行删除。那么当网络发生变化时,则会对当前所有正在请求的线程调用session连接的销毁函数来终止当前的请求。
综上,本申请实施例提供的方法,通过设置正在请求的session连接的链表,将正在请求的session连接的指针存储在链表中,通过调用链表中的指针获取活动连接的终止接口来执行终止操作,方法更为快捷。
在一些示例中,上述基于上述目标指针终止上述正在请求的session连接之后还包括:
在上述终止正在请求的session连接操作完成的情况下,将上述目标指针在上述链表中清除。
示例性的,同时在进行移除(终止)的过程中,也需要销毁掉已经释放的session连接的指针,从而减少链表的大小,提高查找速度。
具体可以通过下述代码实现:
for(auto it=reqList_.begin();it!=reqList_.end();){
编写for循环来遍历链表查找进行删除。
if(it->expired()){it=reqExeList_.erase(it);}如果失效则将其从链表中删除。
else if(it->lock().get()==reqExe){it=reqExeList_.erase(it);如果查找到则进行删除操作。}
else{++it;}没有查找到将继续查找下一个。}
综上,本申请实施例提供的方法,在终止操作完成后将其对应的指针在正在请求的session连接的链表中删除,从而缩小了后续终止操作的链表范围,从而提升了终止操作的效率。
在一些示例中,上述S120步骤中清除session池里所有已连接的session连接之前还包括:
获取上述session池的清除间隔时长。
上述清除session池里所有已连接的session连接,包括:
在上述清除间隔时长大于或等于预设清除时长的情况下,清除上述session池里的上述已连接的session连接。
示例性的,在实际的网络连接中,可能会在短时间内发生多次网络状态改变的现象,如果频繁地执行session池清除操作,势必会造成多次清除无效操作,同时也浪费的设备的性能,因为清除session连接本身会遍历所有建立好的session连接,然后清除session池中所有的session连接。本实施例则提出的方法为当发生网络状态变换时,先获取当前时间,来判断当前时间与上次清除操作的时间间隔是否大于预设的清除时间间隔Elapse,如果是,则清除当前的session连接。此处不对网络事件的网络类型做判断,而是当发现网络切换时清除当前的session连接,从而保障第一时间的将session池中的所有已连接的session连接进行清除,避免后续的网络请求使用了这些无效session连接,而造成了请求失败。
综上,本申请实施例提供的方法,通过获取清除间隔时长与预设清除时长比较,可以有效防止无效清除操作发生,节省设备的性能,同时在清除工作触发时,并不会判断网络变换前后的具体网络类型,从而保证了清除session池的时效性。
在一些示例中,上述获取上述session池的清除间隔时长,包括:
获取一个session连接建立的平均时长;
获取session池被清除的平均时长;
基于上述一个session连接建立的平均时长、上述session池中session连接被清除的平均时长和异步时长确定上述清除间隔时长。
示例性的,通过获取一个session连接被建立的平均时长和session池中session连接被清除的平均时长,并获取操作的异步时长并将三者相加获取预设清除间隔时长,具体可由下式确定:
预设的清除时间间隔Elapse=Time+session_time+delta;
公式中的各个参数含义如下:
首先需要获取当前建立一个session连接的时间,可以通过当前的网络库来记录每次建立一个连接的总耗时,此耗时的平均值则作为一个session连接建立的总耗时时间session_time(一个session连接建立的总耗时)。
然后需要获取当前session池中的总session连接数量session_num。
接着需要获取清除一个session连接的耗时,可以依据统计每次清除session连接的耗时的平均值来得到session_destroy。
则需要依据当前的总数量和清除一个session连接的时间来得到一次清除session池的总耗时Time;
Time=session_num*session_destroy;
预设的清除时间间隔至少大于建立一个session连接的总耗时session_time;
所以,设定预设的清除时间间隔Elapse=Time+session_time+delta;
考虑到时间情况,需要有个兼容时间,由于上述所有操作都是异步逻辑,所以所有的执行可能存在一定的延时,因此需要加上一个延迟时间delta,从而更符合实际情况,而delta时间依据经验则可以填入1秒到3秒的时间间隔。
综上,本申请实施例提供的方法通过一个session连接建立的平均时长、上述session池清除的平均时长和异步时长确定上述清除间隔时长的方法,更符合此客户端的性能。
在一些示例中,上述S110步骤中监听网络状态以获取网络类型之前还包括:
基于网络请求创建网络请求队列,其中,上述网络请求队列包括上述当前网络请求。
上述S150步骤中基于第二网络下的session连接重新执行当前网络请求,包括:
将上述当前网络请求调整至上述网络请求队列的列头,以重新执行上述当前网络请求。
上述方法还包括:
基于调整后的上述网络请求队列通过上述第二网络下的session连接依次执行剩余上述网络请求。
示例性的,客户端可能有很多个网络请求需要被执行,且多个网络请求的执行顺序可能需要保持特定的执行顺序,但客户端只能同时进行其中几个网络请求,根据网络请求创建网络请求队列,并按照执行的先后顺序对请求队列进行排列,网络类型未切换时,按照队列从前至后的顺序依次执行请求操作,在执行当前请求操作开始执行时将该当前请求操作移至请求队列的队尾,从而可以确保后续的网络请求按照既定的顺序执行。而在网络类型发生切换时,当前操作请求是基于第一网络执行的,因此肯定会失败,为了不影响网络请求执行的先后顺序,在网络类型切换时把排在请求队列队尾的当前网络请求调整至网络请求队列的列头,可以实现在第二网络状态下,当前网络请求重新被执行,从而保证了所有网络请求仍然按照既定的顺序执行。
综上,本申请提供的方法在网络类型切换时,将当前网络请求调整至网络请求队列的列头,可以实现在第二网络状态下,当前网络请求重新被执行,从而保证了所有网络请求仍然按照既定的顺序执行。
请参阅图2,本申请实施例中的网络请求装置的一个实施例,可以包括:
第一获取单元21,用于监听网络状态以获取网络类型;
清除单元22,用于在上述网络类型由第一网络切换为第二网络的情况下,清除session池里所有已连接的session连接;
终止单元23,用于终止正在请求的session连接;
创建单元24,用于创建第二网络下的session连接;
执行单元25,用于基于第二网络下的session连接重新执行当前网络请求,其中,上述当前网络请求为正在请求的session连接对应的网络请求。
如图3所示,本申请实施例还提供一种电子设备300,包括存储器310、处理器320及存储在存储器320上并可在处理器上运行的计算机程序311,处理器320执行计算机程序311时实现上述网络请求的任一方法的步骤。
由于本实施例所介绍的电子设备为实施本申请实施例中一种网络请求装置所采用的设备,故而基于本申请实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍,只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
在具体实施过程中,该计算机程序311被处理器执行时可以实现图1对应的实施例中任一实施方式。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,当计算机软件指令在处理设备上运行时,使得处理设备执行如图1对应实施例中的网络请求方法的流程。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种网络请求方法,其特征在于,包括:
监听网络状态以获取网络类型;
在所述网络类型由第一网络切换为第二网络时,清除session池里所有已连接的session连接;
终止正在请求的session连接;
创建第二网络下的session连接;
基于第二网络下的session连接重新执行当前网络请求,其中,所述当前网络请求为正在请求的session连接对应的网络请求。
2.如权利要求1所述的方法,其特征在于,所述在所述网络类型由第一网络切换为第二网络,之后还包括:
获取所述第二网络的网络类型;
在所述第二网络的网络类型为无网络的情况下,不执行所述终止正在请求的session连接的操作。
3.如权利要求2所述的方法,其特征在于,所述监听网络状态以获取网络类型之前还包括:
基于网络请求创建所述正在请求的session连接的链表,其中,所述正在请求的session连接的链表包括所述正在请求的session连接对应的指针;
所述终止正在请求的session连接,包括:
在所述链表中确定所述正在请求的session连接对应的指针为目标指针;
基于所述目标指针终止所述正在请求的session连接。
4.如权利要求3所述的方法,其特征在于,所述基于所述目标指针终止所述正在请求的session连接之后还包括:
在所述终止正在请求的session连接操作完成的情况下,将所述目标指针在所述链表中清除。
5.如权利要求1所述的方法,其特征在于,所述清除session池里所有已连接的session连接之前还包括:
获取所述session池的清除间隔时长;
所述清除session池里所有已连接的session连接,包括:
在所述清除间隔时长大于或等于预设清除时长的情况下,清除所述session池里的所述已连接的session连接。
6.如权利要求5所述的方法,其特征在于,所述获取所述session池的清除间隔时长,包括:
获取一个session连接建立平均时长;
获取session池被清除的平均时长;
基于所述一个session连接建立的平均时长、所述session池被清除平均时长和异步时长确定所述清除间隔时长。
7.如权利要求1所述的方法,其特征在于,所述监听网络状态以获取网络类型之前还包括:
基于网络请求创建网络请求队列,其中,所述网络请求队列包括所述当前网络请求;
所述基于第二网络下的session连接重新执行当前网络请求,包括:
将所述当前网络请求调整至所述网络请求队列的列头,以重新执行所述当前网络请求;
所述方法还包括:
基于调整后的所述网络请求队列通过所述第二网络下的session连接依次执行剩余所述网络请求。
8.一种网络请求装置,其特征在于,包括:
第一获取单元,用于监听网络状态以获取网络类型;
清除单元,用于在所述网络类型由第一网络切换为第二网络时,清除session池里所有已连接的session连接;
终止单元,用于终止正在请求的session连接;
创建单元,用于创建第二网络下的session连接;
执行单元,用于基于第二网络下的session连接重新执行当前网络请求,其中,所述当前网络请求为正在请求的session连接对应的网络请求。
9.一种电子设备,包括:储存器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-7中任一项所述的网络请求方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的网络请求方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210246413.2A CN114844940A (zh) | 2022-03-14 | 2022-03-14 | 一种网络请求方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210246413.2A CN114844940A (zh) | 2022-03-14 | 2022-03-14 | 一种网络请求方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114844940A true CN114844940A (zh) | 2022-08-02 |
Family
ID=82561531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210246413.2A Pending CN114844940A (zh) | 2022-03-14 | 2022-03-14 | 一种网络请求方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114844940A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2461511A1 (en) * | 2001-09-28 | 2003-04-10 | Bridgewater Systems Corporation | Method and system for session accounting in wireless networks |
KR20130085484A (ko) * | 2011-12-08 | 2013-07-30 | 한국전자통신연구원 | 서비스 품질을 보장하는 멀티미디어 서비스 제공 방법 |
CN106332206A (zh) * | 2015-07-07 | 2017-01-11 | 中兴通讯股份有限公司 | 一种实现网络切换的方法及装置 |
CN111182591A (zh) * | 2018-11-12 | 2020-05-19 | 华为技术有限公司 | 网络切换的方法和装置 |
CN111918346A (zh) * | 2016-11-04 | 2020-11-10 | 华为技术有限公司 | 一种通信方法、装置及相关设备 |
CN111988824A (zh) * | 2020-08-31 | 2020-11-24 | 北京字节跳动网络技术有限公司 | 一种网络切换的方法、装置、电子设备及存储介质 |
CN112584449A (zh) * | 2019-09-30 | 2021-03-30 | 中国移动通信有限公司研究院 | 移动会话管理方法、装置、设备及存储介质 |
-
2022
- 2022-03-14 CN CN202210246413.2A patent/CN114844940A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2461511A1 (en) * | 2001-09-28 | 2003-04-10 | Bridgewater Systems Corporation | Method and system for session accounting in wireless networks |
KR20130085484A (ko) * | 2011-12-08 | 2013-07-30 | 한국전자통신연구원 | 서비스 품질을 보장하는 멀티미디어 서비스 제공 방법 |
CN106332206A (zh) * | 2015-07-07 | 2017-01-11 | 中兴通讯股份有限公司 | 一种实现网络切换的方法及装置 |
CN111918346A (zh) * | 2016-11-04 | 2020-11-10 | 华为技术有限公司 | 一种通信方法、装置及相关设备 |
CN111182591A (zh) * | 2018-11-12 | 2020-05-19 | 华为技术有限公司 | 网络切换的方法和装置 |
CN112584449A (zh) * | 2019-09-30 | 2021-03-30 | 中国移动通信有限公司研究院 | 移动会话管理方法、装置、设备及存储介质 |
CN111988824A (zh) * | 2020-08-31 | 2020-11-24 | 北京字节跳动网络技术有限公司 | 一种网络切换的方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103107905B (zh) | 异常处理方法、装置和客户端 | |
CN106911728B (zh) | 分布式系统中主节点的选取方法和装置 | |
CN103092700B (zh) | 内存清理方法、装置和终端设备 | |
JP6639665B2 (ja) | 端末ベースのウェイクロック制御の方法、装置及び端末 | |
JP2002324047A (ja) | 分散クライアント/サーバ環境での自動化セッション・リソース・クリーンアップの方法およびシステム。 | |
JP3600749B2 (ja) | タスク実行方法 | |
WO2009033404A1 (fr) | Appareil de régulation de flux général et procédé | |
CN102055644A (zh) | 分布式目录服务系统中负载管理的方法、装置和系统 | |
CN110650193A (zh) | 节点管理方法、集群管理设备及存储介质 | |
CN112416594A (zh) | 一种微服务分配方法、电子设备和计算机存储介质 | |
CN111552543B (zh) | 容器管控方法及处理节点 | |
CN111124761B (zh) | 一种设备重启方法、装置、设备及介质 | |
CN115023919A (zh) | 防火墙规则的更新方法、装置、服务器及存储介质 | |
CN114844940A (zh) | 一种网络请求方法及相关设备 | |
CN111427704B (zh) | 配置指令的远程监控方法、装置、设备及存储介质 | |
WO2016154921A1 (zh) | 一种数据业务的数据传输方法及装置 | |
US20220045874A1 (en) | Charging processing method and system, and related device | |
CN110768816A (zh) | 多媒体业务异常保护方法和装置 | |
CN111562997B (zh) | 一种媒体通道快速恢复方法、系统及存储介质 | |
CN113014615B (zh) | 数据同步方法、装置和系统 | |
CN111405313B (zh) | 存储流媒体数据的方法和系统 | |
US11317470B2 (en) | Network system, network device applied thereto and operation method for network device, and operation method for network node | |
CN113407369B (zh) | 支持主备系统管理的智能平台管理系统及实现方法 | |
CN112671711B (zh) | 一种网络设备的管理方法及装置 | |
CN111132228B (zh) | Rrc重配置消息的处理方法及装置、存储介质、终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |