CN107402826B - 一种以异步方式进行远程过程调用的方法及装置 - Google Patents
一种以异步方式进行远程过程调用的方法及装置 Download PDFInfo
- Publication number
- CN107402826B CN107402826B CN201710524036.3A CN201710524036A CN107402826B CN 107402826 B CN107402826 B CN 107402826B CN 201710524036 A CN201710524036 A CN 201710524036A CN 107402826 B CN107402826 B CN 107402826B
- Authority
- CN
- China
- Prior art keywords
- back function
- call back
- response result
- unique identifier
- call
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Exchange Systems With Centralized Control (AREA)
- Telephone Function (AREA)
Abstract
本发明公开了一种以异步方式进行远程过程调用的方法,包括:在调用远程过程时,创建与所述远程过程对应的回调函数;将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。本发明实现了在进行远程过程调用时,在没有收到应答结果之前,程序的界面不会出现假死状态,提高了用户体验的技术效果。同时,本发明还公开了一种以异步方式进行远程过程调用的装置。
Description
技术领域
本发明涉及网络直播技术领域,尤其涉及一种以异步方式进行远程过程调用的方法及装置。
背景技术
随着网络通信技术的进步和宽带网络的提速,网络直播得到了越来越多的发展和应用。在网络直播过程中,经常会进行远程过程调用。
所谓远程过程调用,就是一个进程调用另外一个进程所提供的方法,但是在调用者的角度仍然跟调用本进程的函数是一致的。在远程过程调用中,将要提供给被调用者进程的所有参数序列化为一个网络消息,然后通过网络传输发送到被调用者进程中。被调用者处理完成相应的服务后,将产生的结果也序列化成一个网络消息,发送到调用者进程。而在这个过程中,当调用者调用一个远程过程到收到结果之前,通常都是阻塞的;也就是在收到来自被调用者的应答结果之前,调用者调用一个远程过程之后,一直阻塞住,直到收到应答结果才会被唤醒。
但是,在程序的主线程中调用远程过程时,在没有收到应答结果之前,程序的界面将会出现假死状态,用户的任何鼠标点击操作都不会被响应,极大的影响用户体验。
发明内容
本申请实施例通过提供一种以异步方式进行远程过程调用的方法及装置,解决了现有技术中在进行远程过程调用时,在没有收到应答结果之前,程序的界面将会出现假死状态的技术问题,实现了在进行远程过程调用时,在没有收到应答结果之前,程序的界面不会出现假死状态,提高了用户体验的技术效果。
第一方面,本申请通过本申请的一实施例提供如下技术方案:
一种以异步方式进行远程过程调用的方法,包括:
在调用远程过程时,创建与所述远程过程对应的回调函数;
将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;
在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
优选地,所述创建与所述远程过程对应的回调函数之后,还包括:
对所述回调函数分配唯一标识符;
将所述回调函数和所述唯一标识符存储在字典Dict中,所述唯一标识符与所述回调函数对应。
优选地,所述将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端,包括:
建立所述调用端和所述被调用端之间的网络连接;
将所述唯一标识符连同所述调用请求一起发给所述被调用端。
优选地,所述在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端,包括:
在接收到所述真实应答结果时,从所述真实应答结果中提取所述唯一标识符;
基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时;
若没超时,则基于所述唯一标识符,在所述字典Dict中提取所述回调函数;
通过所述回调函数将所述真实应答结果返回给所述调用端。
优选地,所述基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时,包括:
基于所述唯一标识符,在所述字典Dict中查找与所述唯一标识符对应的所述回调函数,其中,所述回调函数会在超时时被删除;
若找到所述回调函数,则表明接收到所述真实应答结果的时间没超时;
若没找到所述回调函数,则表明接收到所述真实应答结果的时间超时。
优选地,所述将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端之后,还包括:
检测所述调用端和所述被调用端之间的网络连接是否断开;
若断开,则清空所述字典Dict中的数据。
优选地,所述检测所述网络连接是否断开,包括:
检测所述网络连接对应的线程是否进入OnError函数中;
若是,则表明所述网络连接断开。
第二方面,本申请通过本申请的一实施例,提供如下技术方案:
一种以异步方式进行远程过程调用的装置,包括:
创建单元,用于在调用远程过程时,创建与所述远程过程对应的回调函数;
发送单元,用于将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
第一返回单元,用于向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;
第二返回单元,用于在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
第三方面,本申请通过本申请的一实施例,提供如下技术方案:
一种以异步方式进行远程过程调用的装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
在调用远程过程时,创建与所述远程过程对应的回调函数;
将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;
在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
第四方面,本申请通过本申请的一实施例,提供如下技术方案:
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
在调用远程过程时,创建与所述远程过程对应的回调函数;
将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;
在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
在本申请实施例中,公开了一种以异步方式进行远程过程调用的方法,包括:在调用远程过程时,创建与所述远程过程对应的回调函数;将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。由于在接收到所述被调用端返回的真实应答结果之前,向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态,所以解决了现有技术中在进行远程过程调用时,在没有收到应答结果之前,程序的界面将会出现假死状态的技术问题,实现了在进行远程过程调用时,在没有收到应答结果之前,程序的界面不会出现假死状态,提高了用户体验的技术效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种以异步方式进行远程过程调用的方法的流程图;
图2为本申请实施例中一种以异步方式进行远程过程调用的装置的结构图;
图3为本申请实施例中一种以异步方式进行远程过程调用的装置的结构图;
图4为本申请实施例中一种计算机可读存储介质的示意图。
具体实施方式
本申请实施例通过提供一种以异步方式进行远程过程调用的方法及装置,解决了现有技术中在进行远程过程调用时,在没有收到应答结果之前,程序的界面将会出现假死状态的技术问题,实现了在进行远程过程调用时,在没有收到应答结果之前,程序的界面不会出现假死状态,提高了用户体验的技术效果。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:
一种以异步方式进行远程过程调用的方法,包括:在调用远程过程时,创建与所述远程过程对应的回调函数;将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
实施例一
本实施例提供了一种以异步方式进行远程过程调用的方法,如图1所示,包括:
步骤S101:在调用远程过程时,创建与远程过程对应的回调函数。
在具体实施过程中,在调用端需要调用远程过程时,可以为该远程过程创建一个回调函数RpcCompleteRoutine,该回调函数与该远程过程对应。
在具体实施过程中,在创建完成回调函数后,还需要对该回调函数进行设置。具体来讲,就是在调用RpcCallProcedure函数时,将一个类型为RpcCompleteRoutine的函数,设置到RpcCallProcedure函数的参数中,从而指示RpcCallProcedure函数以异步的方式去调用远程过程。
作为一种可选的实施方式,在步骤S101之后,还包括:
对回调函数分配唯一标识符;将回调函数和唯一标识符存储在字典Dict中,唯一标识符与回调函数对应。
在具体实施过程中,调用端可能会同时调用多个远程过程,此时,可以对每个远程过程都设置一个回调函数,并对每个回调函数都分配一个唯一标识符gid。其中,可以在每次调用RpcCallProcedure函数时,将上次的唯一标识符gid加1,使得每个唯一标识符gid均不相同。
举例来讲,若调用端同时调用3个远程过程,分别为远程过程_1、远程过程_2、远程过程_3,则可以为远程过程_1创建回调函数RpcCompleteRoutine_1,并分配唯一标识符gid_1;可以为远程过程_2创建回调函数RpcCompleteRoutine_2,并分配唯一标识符gid_2,可以为远程过程_3回调函数RpcCompleteRoutine_3,并分配唯一标识符gid_3;以此类推。
在具体实施过程中,还可以为回调函数设置超时定时器。
具体来讲,在为回调函数设置超时定时器时,可以通过调用系统的SetTimer函数设定一个定时器,并将定时器超时时的回调过程onTimeOut函数、以及超时的时间设置到SetTimer函数的参数中。
在具体实施过程中,在对每个回调函数都分配一个唯一标识符gid后,还需要对每个回调函数设置超时定时器。
举例来讲,为回调函数RpcCompleteRoutine_1设置超时定时器Timer_1,为回调函数RpcCompleteRoutine_2设置超时定时器Timer_2,为回调函数RpcCompleteRoutine_3设置超时定时器Timer_3;以此类推。
在具体实施过程中,可以将每个回调函数、每个回调函数对应的唯一标识符gid、以及每个回调函数对应的超时定时器,都存储在全局字典Dict中,以方便以后查询。
在具体实施过程中,在超时定时器中设置有一onTimeOut处理函数,当在规定的超时时间内,若没有收到来自被调用端的应答结果(即:真实应答结果),则会触发超时定时器中的onTimeOut处理函数,onTimeOut处理函数用于将超时的RpcCompleteRoutine回调函数、及其超时定时器从全局字典Dict中删除。
举例来讲,远程过程_1对应有唯一标识符为gid_1、回调函数为RpcCompleteRoutine_1、超时定时器Timer_1。超时定时器Timer_1用于计时,在规定的超时时间到来时,则会触发则超时定时器Timer_1中的onTimeOut处理函数,从而将回调函数为RpcCompleteRoutine_1和超时定时器Timer_1从全局字典Dict中删除。
步骤S102:将调用远程过程所需的调用请求发送给远程过程的被调用端。
作为一种可选的实施方式,步骤S102,包括:
建立调用端和被调用端之间的网络连接;将唯一标识符连同调用请求一起发给被调用端。
在具体实施过程中,可以调用RpcCallProcedure函数,将唯一标识符gid连同调用请求一起发给被调用端。或者,也可以在调用请求中携带唯一标识符gid。
步骤S103:向远程过程的调用端返回一虚拟应答结果,以使得调用端对应的线程处于唤醒状态。
在具体实施过程中,在收到被调用端返回的应答结果(即:真实应答结果)之前,可以创建一个虚拟应答结果,并将该虚拟应答结果返回给调用端,以使得调用端对应的线程处于唤醒状态。这样,就解决了现有技术中在进行远程过程调用时,在没有收到应答结果之前,程序的界面将会出现假死状态的技术问题,实现了在进行远程过程调用时,在没有收到应答结果之前,程序的界面不会出现假死状态,提高了用户体验的技术效果。
其中,虚拟应答结果与远程过程调用无关,不会对远程过程调用造成影响,但是会使RpcCallProcedure函数立即返回,从而唤醒调用端对应的线程,这样,程序的界面就不会出现假死状态;而真实应答结果是远程过程的被调用端在接收到调用端发来的调用请求后返回给调用端的应答结果,调用端可以基于该应答结果实现远程过程的调用。
步骤S104:在接收到被调用端返回的真实应答结果时,通过回调函数将真实应答结果返回给调用端。
作为一种可选的实施方式,步骤S104,包括:
在接收到真实应答结果时,从真实应答结果中提取唯一标识符;基于唯一标识符,判断接收到真实应答结果的时间是否超时;若没超时,则基于唯一标识符,在字典Dict中提取回调函数;通过回调函数将真实应答结果返回给调用端。
在具体实施过程中,可以基于唯一标识符,在字典Dict中查找与唯一标识符对应的回调函数,其中,回调函数会在超时时被删除;若找到回调函数,则表明接收到真实应答结果的时间没超时;若没找到回调函数,则表明接收到真实应答结果的时间超时。
举例来讲,在接收到来自被调用端的应答结果时,可以根据该应答结果中携带的唯一标识符gid_1,在全局字典Dict中查找是否有唯一标识符gid_1对应的消息回调函数RpcCompleteRoutine_1,如果有,则表示未超时,则调用回调函数RpcCompleteRoutine_1将应答结果返回给调用端,同时,还需要将唯一标识符gid_1对应的超时定时器Timer_1从全局字典Dict中删除,具体可以通过DeleteTimer函数删除该超时定时器;如果在全局字典Dict中没有找到唯一标识符gid_1对应的回调函数RpcCompleteRoutine_1,那么就意味着本次异步调用发生了超时,该回调函数RpcCompleteRoutine_1已被删除。
最后需要注意的是,如果某种原因,被调用端发生了崩溃或者被关闭,那么异步调用远程过程时,同样也永远接收不到来自被调用端的应答结果。
为了解决上述问题,作为一种可选的实施方式,在步骤S102之后,还包括:
检测调用端和被调用端之间的网络连接是否断开;若断开,则清空字典Dict中的数据。
在具体实施过程中,可以检测所述网络连接对应的线程是否进入OnError函数中;若是,则表明所述网络连接断开。
在具体实施过程中,若检测到调用端和被调用端之间的网络连接断开时,则将Dict字典中全部回调函数和超时定时器删除,以防止资源浪费。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
在本申请实施例中,公开了一种以异步方式进行远程过程调用的方法,包括:在调用远程过程时,创建与所述远程过程对应的回调函数;将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。由于在接收到所述被调用端返回的真实应答结果之前,向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态,所以解决了现有技术中在进行远程过程调用时,在没有收到应答结果之前,程序的界面将会出现假死状态的技术问题,实现了在进行远程过程调用时,在没有收到应答结果之前,程序的界面不会出现假死状态,提高了用户体验的技术效果。
实施例二
基于同一发明构思,如图2所示,本实施例提供了一种以异步方式进行远程过程调用的装置200,包括:
创建单元201,用于在调用远程过程时,创建与所述远程过程对应的回调函数;
发送单元202,用于将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
第一返回单元203,用于向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;
第二返回单元204,用于在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
作为一种可选的实施方式,所述以异步方式进行远程过程调用的装置,还包括:
分配单元,用于在所述创建与所述远程过程对应的回调函数之后,对所述回调函数分配唯一标识符;
存储单元,用于将所述回调函数和所述唯一标识符存储在字典Dict中,所述唯一标识符与所述回调函数对应。
作为一种可选的实施方式,发送单元202,具体用于:
建立所述调用端和所述被调用端之间的网络连接;将所述唯一标识符连同所述调用请求一起发给所述被调用端。
作为一种可选的实施方式,第二返回单元204,具体用于:
在接收到所述真实应答结果时,从所述真实应答结果中提取所述唯一标识符;基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时;若没超时,则基于所述唯一标识符,在所述字典Dict中提取所述回调函数;通过所述回调函数将所述真实应答结果返回给所述调用端。
作为一种可选的实施方式,第二返回单元204,具体用于:
基于所述唯一标识符,在所述字典Dict中查找与所述唯一标识符对应的所述回调函数,其中,所述回调函数会在超时时被删除;若找到所述回调函数,则表明接收到所述真实应答结果的时间没超时;若没找到所述回调函数,则表明接收到所述真实应答结果的时间超时。
作为一种可选的实施方式,所述以异步方式进行远程过程调用的装置,还包括:
检测单元,用于在所述将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端之后,检测所述调用端和所述被调用端之间的网络连接是否断开;
清空单元,用于若断开,则清空所述字典Dict中的数据。
作为一种可选的实施方式,所述检测单元,具体用于:
检测所述网络连接对应的线程是否进入OnError函数中;若是,则表明所述网络连接断开。
由于本实施例所介绍的以异步方式进行远程过程调用的装置为实施本申请实施例中以异步方式进行远程过程调用的方法所采用的装置,故而基于本申请实施例中所介绍的以异步方式进行远程过程调用的方法,本领域所属技术人员能够了解本实施例的以异步方式进行远程过程调用的装置的具体实施方式以及其各种变化形式,所以在此对于该以异步方式进行远程过程调用的装置如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中以异步方式进行远程过程调用的方法所采用的装置,都属于本申请所欲保护的范围。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
在本申请实施例中,公开了一种以异步方式进行远程过程调用的方法,包括:创建单元,用于在调用远程过程时,创建与所述远程过程对应的回调函数;发送单元,用于将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;第一返回单元,用于向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;第二返回单元,用于在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。由于在接收到所述被调用端返回的真实应答结果之前,向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态,所以解决了现有技术中在进行远程过程调用时,在没有收到应答结果之前,程序的界面将会出现假死状态的技术问题,实现了在进行远程过程调用时,在没有收到应答结果之前,程序的界面不会出现假死状态,提高了用户体验的技术效果。
实施例三
基于同一发明构思,如图3所示,本实施例提供了一种以异步方式进行远程过程调用的装置300,包括存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序311,所述处理器320执行所述计算机程序320时实现以下步骤:
在调用远程过程时,创建与所述远程过程对应的回调函数;将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
在具体实施过程中,处理器320执行计算机程序311时,可以实现实施例一种的任一实施方式。
实施例四
基于同一发明构思,如图4所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序被处理器执行时实现以下步骤:
在调用远程过程时,创建与所述远程过程对应的回调函数;将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;向所述远程过程的调用端返回一虚拟应答结果,以使得所述调用端对应的线程处于唤醒状态;在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端。
在具体实施过程中,该计算机程序411被处理器执行时,可以实现实施例一种的任一实施方式。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (7)
1.一种以异步方式进行远程过程调用的方法,其特征在于,包括:
在调用远程过程时,创建与所述远程过程对应的回调函数;
对所述回调函数分配唯一标识符,并将所述回调函数和所述唯一标识符存储在字典Dict中,所述唯一标识符与所述回调函数对应;
将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
向所述远程过程的调用端返回一虚拟应答结果,所述虚拟应答结果能够使得远程过程调用函数返回,以使得所述调用端对应的线程处于唤醒状态;
在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端;其包括:在接收到所述真实应答结果时,从所述真实应答结果中提取所述唯一标识符,基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时,若没超时,则基于所述唯一标识符,在所述字典Dict中提取所述回调函数,通过所述回调函数将所述真实应答结果返回给所述调用端;
其中,所述基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时,包括:基于所述唯一标识符,在所述字典Dict中查找与所述唯一标识符对应的所述回调函数,其中,所述回调函数会在超时时被删除;若找到所述回调函数,则表明接收到所述真实应答结果的时间没超时;若没找到所述回调函数,则表明接收到所述真实应答结果的时间超时。
2.如权利要求1所述的以异步方式进行远程过程调用的方法,其特征在于,所述将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端,包括:
建立所述调用端和所述被调用端之间的网络连接;
将所述唯一标识符连同所述调用请求一起发给所述被调用端。
3.如权利要求1所述的以异步方式进行远程过程调用的方法,其特征在于,所述将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端之后,还包括:
检测所述调用端和所述被调用端之间的网络连接是否断开;
若断开,则清空所述字典Dict中的数据。
4.如权利要求3所述的以异步方式进行远程过程调用的方法,其特征在于,所述检测所述网络连接是否断开,包括:
检测所述网络连接对应的线程是否进入OnError函数中;
若是,则表明所述网络连接断开。
5.一种以异步方式进行远程过程调用的装置,其特征在于,包括:
创建单元,用于在调用远程过程时,创建与所述远程过程对应的回调函数;
分配单元,用于在所述创建与所述远程过程对应的回调函数之后,对所述回调函数分配唯一标识符;
存储单元,用于将所述回调函数和所述唯一标识符存储在字典Dict中,所述唯一标识符与所述回调函数对应;
发送单元,用于将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
第一返回单元,用于向所述远程过程的调用端返回一虚拟应答结果,所述虚拟应答结果能够使得远程过程调用函数返回,以使得所述调用端对应的线程处于唤醒状态;
第二返回单元,用于在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端;所述第二返回单元,具体用于:在接收到所述真实应答结果时,从所述真实应答结果中提取所述唯一标识符;基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时;若没超时,则基于所述唯一标识符,在所述字典Dict中提取所述回调函数;通过所述回调函数将所述真实应答结果返回给所述调用端;
所述第二返回单元,具体用于:
基于所述唯一标识符,在所述字典Dict中查找与所述唯一标识符对应的所述回调函数,其中,所述回调函数会在超时时被删除;若找到所述回调函数,则表明接收到所述真实应答结果的时间没超时;若没找到所述回调函数,则表明接收到所述真实应答结果的时间超时。
6.一种以异步方式进行远程过程调用的装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
在调用远程过程时,创建与所述远程过程对应的回调函数;
对所述回调函数分配唯一标识符,并将所述回调函数和所述唯一标识符存储在字典Dict中,所述唯一标识符与所述回调函数对应;
将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
向所述远程过程的调用端返回一虚拟应答结果,所述虚拟应答结果能够使得远程过程调用函数返回,以使得所述调用端对应的线程处于唤醒状态;
在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端;其包括:在接收到所述真实应答结果时,从所述真实应答结果中提取所述唯一标识符,基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时,若没超时,则基于所述唯一标识符,在所述字典Dict中提取所述回调函数,通过所述回调函数将所述真实应答结果返回给所述调用端;
其中,所述基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时,包括:基于所述唯一标识符,在所述字典Dict中查找与所述唯一标识符对应的所述回调函数,其中,所述回调函数会在超时时被删除;若找到所述回调函数,则表明接收到所述真实应答结果的时间没超时;若没找到所述回调函数,则表明接收到所述真实应答结果的时间超时。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
在调用远程过程时,创建与所述远程过程对应的回调函数;
对所述回调函数分配唯一标识符,并将所述回调函数和所述唯一标识符存储在字典Dict中,所述唯一标识符与所述回调函数对应;
将调用所述远程过程所需的调用请求发送给所述远程过程的被调用端;
向所述远程过程的调用端返回一虚拟应答结果,所述虚拟应答结果能够使得远程过程调用函数返回,以使得所述调用端对应的线程处于唤醒状态;
在接收到所述被调用端返回的真实应答结果时,通过所述回调函数将所述真实应答结果返回给所述调用端;其包括:在接收到所述真实应答结果时,从所述真实应答结果中提取所述唯一标识符,基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时,若没超时,则基于所述唯一标识符,在所述字典Dict中提取所述回调函数,通过所述回调函数将所述真实应答结果返回给所述调用端;
其中,所述基于所述唯一标识符,判断接收到所述真实应答结果的时间是否超时,包括:基于所述唯一标识符,在所述字典Dict中查找与所述唯一标识符对应的所述回调函数,其中,所述回调函数会在超时时被删除;若找到所述回调函数,则表明接收到所述真实应答结果的时间没超时;若没找到所述回调函数,则表明接收到所述真实应答结果的时间超时。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710524036.3A CN107402826B (zh) | 2017-06-30 | 2017-06-30 | 一种以异步方式进行远程过程调用的方法及装置 |
PCT/CN2017/111002 WO2019000791A1 (zh) | 2017-06-30 | 2017-11-15 | 一种以异步方式进行远程过程调用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710524036.3A CN107402826B (zh) | 2017-06-30 | 2017-06-30 | 一种以异步方式进行远程过程调用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107402826A CN107402826A (zh) | 2017-11-28 |
CN107402826B true CN107402826B (zh) | 2018-09-21 |
Family
ID=60404778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710524036.3A Active CN107402826B (zh) | 2017-06-30 | 2017-06-30 | 一种以异步方式进行远程过程调用的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107402826B (zh) |
WO (1) | WO2019000791A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659140B (zh) * | 2018-06-30 | 2022-01-04 | 武汉斗鱼网络科技有限公司 | 一种指令执行的方法以及相关设备 |
CN112631701A (zh) * | 2020-12-22 | 2021-04-09 | 平安普惠企业管理有限公司 | 页面请求方法、装置、计算机设备和存储介质 |
CN112788104B (zh) * | 2020-12-25 | 2023-05-12 | 珠海金山数字网络科技有限公司 | 一种远程过程调用方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262498B (zh) * | 2008-04-22 | 2011-01-05 | 华为技术有限公司 | 一种分布式调用消息的方法和装置 |
CN102567111B (zh) * | 2011-12-23 | 2017-10-27 | 融创天下(上海)科技发展有限公司 | 一种异步过程调用的方法、系统和终端设备 |
CN102662778A (zh) * | 2012-04-28 | 2012-09-12 | 杭州格畅科技有限公司 | 在线应用平台上应用间通信的回调应答方法、应用及在线应用平台 |
CN103885973B (zh) * | 2012-12-21 | 2017-07-07 | 中国科学院声学研究所 | 一种基于Web引擎的远程过程调用系统及实现方法 |
CN103051728B (zh) * | 2013-01-10 | 2015-07-08 | 太仓市同维电子有限公司 | 一种远程过程调用方法 |
US9032200B2 (en) * | 2013-03-14 | 2015-05-12 | American Megatrends, Inc. | Method of installing virtual service processor (VSP) to computing device and application of the same |
CN106161537B (zh) * | 2015-04-10 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN105357273B (zh) * | 2015-09-30 | 2018-06-19 | 山东乾云启创信息科技股份有限公司 | 异步通信模式下socket通信与进程管理通用平台及方法 |
-
2017
- 2017-06-30 CN CN201710524036.3A patent/CN107402826B/zh active Active
- 2017-11-15 WO PCT/CN2017/111002 patent/WO2019000791A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2019000791A1 (zh) | 2019-01-03 |
CN107402826A (zh) | 2017-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105227398B (zh) | 多业务共享长连接方法、系统及其装置、终端 | |
CN103442042B (zh) | 增量数据同步方法及系统 | |
CN107436817B (zh) | 一种以同步方式进行远程过程调用的方法及装置 | |
CN107402826B (zh) | 一种以异步方式进行远程过程调用的方法及装置 | |
CN104623898B (zh) | 一种进入游戏副本场景的方法和游戏服务器 | |
CN105208058B (zh) | 基于web会话共享的信息交互系统 | |
CN105429811B (zh) | 网络管理系统及方法 | |
CN104809816B (zh) | 取件处理方法、取件执行方法、取件方法和装置及系统 | |
CN106487928A (zh) | 消息推送方法及装置 | |
RU2690198C1 (ru) | Способ обработки ресурсов виртуализации сетевых функций и диспетчер виртуализованной сетевой функции | |
CN103716356B (zh) | 基于web的存储过程操作方法、装置和系统 | |
CN106612196B (zh) | 获取资源的方法及装置 | |
CN105634778A (zh) | 实现vnf实例化的方法、系统及nfvo和vnfm | |
CN107678867A (zh) | 一种进行远程过程调用的方法及装置 | |
CN112202877B (zh) | 网关联动方法、网关、云服务器及用户终端 | |
CN109788301A (zh) | 一种流媒体的直播方法、终端设备、直播系统及计算机可读存储介质 | |
CN107770754A (zh) | 一种通知发送方法、装置和系统 | |
CN109150981B (zh) | 区块链网络组网方法、装置、设备及计算机可读存储介质 | |
US20180124576A1 (en) | Method and apparatus for implementing member resource processing | |
CN106973106B (zh) | 一种获取会话信息的方法、装置及系统 | |
CN109104472B (zh) | 区块链网络组网方法、装置、设备及计算机可读存储介质 | |
CN109600402A (zh) | 服务器负载均衡方法及装置、存储介质、服务器、服务系统 | |
CN109327705A (zh) | 一种直播视频的传输方法、装置、服务器及介质 | |
CN107249192A (zh) | 一种共享网络切片的状态监控方法及装置 | |
CN109981694B (zh) | 一种同步方法、服务器及终端 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230524 Address after: Room 2062, No. 422 Xingye Avenue East, Nancun Town, Panyu District, Guangzhou City, Guangdong Province, 511400 Patentee after: Guangzhou Zhuohang Information Technology Co.,Ltd. Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |