CN109857572B - 实现远程调用的方法、装置、设备及计算机可读存储介质 - Google Patents

实现远程调用的方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN109857572B
CN109857572B CN201811648009.8A CN201811648009A CN109857572B CN 109857572 B CN109857572 B CN 109857572B CN 201811648009 A CN201811648009 A CN 201811648009A CN 109857572 B CN109857572 B CN 109857572B
Authority
CN
China
Prior art keywords
terminal
message
identifier
identification
flag bit
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
Application number
CN201811648009.8A
Other languages
English (en)
Other versions
CN109857572A (zh
Inventor
宫博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apollo Intelligent Technology Beijing Co Ltd
Original Assignee
Apollo Intelligent Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apollo Intelligent Technology Beijing Co Ltd filed Critical Apollo Intelligent Technology Beijing Co Ltd
Priority to CN201811648009.8A priority Critical patent/CN109857572B/zh
Publication of CN109857572A publication Critical patent/CN109857572A/zh
Application granted granted Critical
Publication of CN109857572B publication Critical patent/CN109857572B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开提供一种实现远程调用的方法、装置、设备及计算机可读存储介质,包括:第一终端注册为主题是第一标识的订阅者;所述第一终端接收第二终端发布的消息,其中,所述第二终端是主题为所述第一标识的发布者;所述第一终端根据所述消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述消息进行处理。本公开提供的方法、装置、设备及计算机可读存储介质,能够基于MQTT协议实现RPC功能,通过两个终端互为发布者、订阅者的身份,进行信息传递,从而解决现有技术中需要通过网络编程的方式搭建RPC方案,使得方案实现过程更简单,也更加灵活。

Description

实现远程调用的方法、装置、设备及计算机可读存储介质
技术领域
本公开涉及远程调用技术,尤其涉及一种实现远程调用的方法、装置、设备及计算机可读存储介质。
背景技术
RPC(远程过程调用协议,Remote Procedure Call Protocol),用于实现跨平台的方法或函数的调用,例如,一个应用部署在服务器A中,另一个应用部署在服务器B中,服务器A中的应用若需要调用服务器B中的方法/函数,由于二者不在一个内存空间,不能直接调用,需要通过RPC功能进行调用。
实现RPC的方案有多种,但是,现有技术中的RPC方案通常是基于网络编程直接搭建,需要明确客户端和服务端的详细网址和端口号,并且,服务端和客户端无法建立动态链接,无法改变服务无端在网络中的位置,此外,基于网络编程的方案通常无法解决跨平台跨系统的问题。
因此,现有技术中的RPC的方案有较多的缺陷,在一些特定的应用场景中,并不适用。
发明内容
本公开提供一种实现远程调用的方法、装置、设备及计算机可读存储介质,以解决现有技术中的RPC的方案有较多的缺陷,在一些特定的应用场景中,并不适用。
本公开的第一个方面是提供一种实现远程调用的方法,包括:
第一终端注册为主题是第一标识的订阅者;
所述第一终端接收第二终端发布的消息,其中,所述第二终端是主题为所述第一标识的发布者;
所述第一终端根据所述消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述消息进行处理。
本公开的第二个方面是提供一种实现远程调用的方法,包括:
第二终端注册为主题是第一标识的发布者;
所述第二终端发布主题是第一标识的消息,所述消息中包括标志位,以使第一终端接收到所述消息,并根据所述标志位对所述消息进行处理;其中,所述第一终端为主题是第一标识的订阅者。
本公开的第三个方面是提供一种实现远程调用的装置,包括:
注册模块,用于注册为主题是第一标识的订阅者;
接收模块,用于接收第二终端发布的消息,其中,所述第二终端是主题为所述第一标识的发布者;
确定模块,用于根据所述消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述消息进行处理。
本公开的第四个方面是提供一种实现远程调用的装置,包括:
注册模块,用于注册为主题是第一标识的发布者;
发布模块,用于发布主题是第一标识的消息,所述消息中包括标志位,以使第一终端接收到所述消息,并根据所述标志位对所述消息进行处理;其中,所述第一终端为主题是第一标识的订阅者。
本公开的又一个方面是提供一种实现远程调用的设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如上述第一方面或第二方面所述的实现远程调用的方法。
本公开的又一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面或第二方面所述的实现远程调用的方法。
本公开提供的实现远程调用的方法、装置、设备及计算机可读存储介质的技术效果是:
本公开提供的实现远程调用的方法、装置、设备及计算机可读存储介质,包括:第一终端注册为主题是第一标识的订阅者;所述第一终端接收第二终端发布的消息,其中,所述第二终端是主题为所述第一标识的发布者;所述第一终端根据所述消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述消息进行处理。本公开提供的方法、装置、设备及计算机可读存储介质,能够基于MQTT协议实现RPC功能,通过两个终端互为发布者、订阅者的身份,进行信息传递,从而解决现有技术中需要通过网络编程的方式搭建RPC方案,使得方案实现过程更简单,也更加灵活。
附图说明
图1为本发明一示例性实施例示出的实现远程调用的方法的流程图;
图2为本发明另一示例性实施例示出的实现远程调用的方法的流程图;
图3为本发明又一示例性实施例示出的实现远程调用的方法的流程图;
图4为本发明再一示例性实施例示出的实现远程调用的方法的流程图;
图5为本发明一示例性实施例示出的实现远程调用的装置的结构图;
图6为本发明另一示例性实施例示出的实现远程调用的装置的结构图;
图7为本发明又一示例性实施例示出的实现远程调用的装置的结构图;
图8为本发明再一示例性实施例示出的实现远程调用的装置的结构图;
图9为本发明一示例性实施例示出的实现远程调用的设备的结构图。
具体实施方式
在很多应用场景中,都存在跨平台通信的需求。现有技术中,可以通过搭建RPC方案,通过远程调用的方式实现跨平台通信的功能。但是,现有技术中的RPC方案,调用过程需要明确客户端和服务端的详细网络地址和端口号,这就需要调用者了解网络的具体细节,并且,服务端和客户端无法建立动态链接,无法改变服务无端在网络中的位置,因此,现有技术中的RPC方案在建立过程中存在一定的弊端。
本公开提供的实现远程调用的方案,能够基于MQTT(Message Queuing TelemetryTransport,消息队列遥测传输)协议实现跨平台的方法/函数调用,不存在上述技术问题。
MQTT是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。
图1为本发明一示例性实施例示出的实现远程调用的方法的流程图。
如图1所示,本实施例提供的实现远程调用的方法包括:
步骤101,第一终端注册为主题是第一标识的订阅者。
其中,本实施例提供的方法由第一终端来执行,第一终端具备计算能力,可以是计算机等独立的电子设备,也可以是其他电子设备内的处理器部件。本申请提供的方法,可以应用在多个终端直接,从而实现多终端的函数/方法的调用功能;也可以应用在同一个终端内置的多个芯片之间,从而实现多个芯片的函数/方法的调用功能。
具体的,第一终端内可以设置有MQTT协议。MQTT协议可以以极少的代码和有线的带宽,为连接远程设备提供实施可靠的消息服务。在MQTT协议中,可以包括三种身份。一种是发布者(publish),还有一种是代理(broker),第三种是订阅者(subscribe)。MQTT协议中,传输的消息分为两部分,一部分为主题(Topic),另一部分为负载(payload)。Topic是指消息的类型,订阅者订阅后,可以收到该类型的消息内容。payload即为消息内容。
本实施例提供的方法中,两个终端可以基于发布者以及订阅者的身份,传递信息,从而实现跨端调用函数以及方法。
进一步的,第一终端可以调用MQTT协议注册成为主题是第一标识的订阅者。该第一标识可以是第一终端标识,例如,第一终端在网络中的标识为终端A,则其可以注册为类型是终端A的订阅者,终端A可以接收到其他终端发布类型是终端A的消息。例如,网络中还设置有终端B,终端B需要调用终端A的函数时,可以发布Topic是终端A的消息。
实际应用时,第一终端中可以存储待调用的函数/方法,第一终端可以存储第一标识与其对应的可调用的函数/方法。当第一终端具有多个功能时,例如可以用于注册,可以用于更新,则第一终端在网络中可以具有多个标识,此时,第一终端可以根据其在网络中的标识注册成为多个第一标识的订阅者,例如终端A注册、终端A更新,还可以存储不同第一标识对应的待调用函数/方法。并且,第一终端可以接收网络中其他终端根据不同需求发布的调用请求,例如,终端B在需要调用注册函数时,可以发布类型是终端A注册的消息,当终端B需要调用更新函数时,可以发布类型是终端A更新的消息。
步骤102,第一终端接收第二终端发布的消息,其中,第二终端是主题为第一标识的发布者。
实际应用时,第二终端可以调用MQTT协议,注册为主题是第一标识的发布者,使得其发布的消息能够被第一终端接收。
其中,第二终端发布的消息中可以携带有具体的信息,例如需要调用的函数名称,以及调用该函数时传入的参数。从而使第一终端可以基于这些信息确定反馈结果。
具体的,第二终端还可以调用MQTT协议,注册为主题是第二标识的订阅者。该第二标识可以是第二终端的标识,例如,第二终端在网络中的标识为终端B,则其可以注册为Topic是终端B的订阅者,当其他终端想要连接第二终端时,可以发布主题是终端B的消息,从而使第二终端接收到该消息。例如,第一终端需要向终端B反馈结果时,就可以发布Topic是终端B的消息。当然,第一终端在发布消息之前,需要先注册成为Topic是终端B的发布者。
进一步的,第二终端发布的消息中还可以携带有标志位,用于标注自身的状态。例如,第二终端在注册成为Topic是第一标识的发布者、第二标识的订阅者后,可以将状态标志位设置为1,表明其未注销的状态。还可以设置第一标识标志位,用于标注第二终端与第一标识对应的终端的连接状态。例如,在第二终端完成注册后,可以将第一标识标志位设置为1,表明其还没有第一标识对应的终端进行过交互。若第二终端完成了与第一终端的交互,则可以将第一标识标志位设置为0,表明其已经与第一标识对应的终端交互过了。
实际应用时,第二终端可以是注册多个主题的发布者,例如,第二终端需要与终端A、终端C进行交互,则其可以分别注册为主题是终端A、终端C的发布者。相应的,在发布消息时,消息内放置的标志位应当与该消息的类型对应。例如,终端B未与终端A交互过,则其首次发布Topic是终端A的消息时,消息内的第一标识标志位可以是1。若终端B已经与终端C交互过,则其再次发布Topic是终端C的消息时,消息内的第一标识标志位可以是0。
其中,第二终端可以在注册完成后,将与第一标识对应的第一标识标志位设置为1,当接收到终端发布的类型为第一标识的消息后,就将该第一标识标志位设置为0。此外,第二终端在注册完成后,可以将状态标志位设置为1,当第二终端被注销后,其可以将状态标志位设置为0。
步骤103,第一终端根据消息中的标志位确定第二终端的状态,并根据第二终端的状态对消息进行处理。
具体的,第一终端接收到第二终端发布的消息后,可以读取其中的标志位,再确定具体的执行步骤。
进一步的,若第一终端根据标志位确定第二终端是首次与第一终端交互,则可以获取消息中包括的第二终端标识,并存储第二终端标识。具体可以存储第一标识、第二终端标识以及可调用函数的对应关系。
其中,为了使第一终端能够向第二终端反馈结果,第一终端还可以注册成为第二终端对应的发布者。具体可以基于第一终端接收的消息中第二终端的标识进行注册。
具体的,存储完毕后,第一终端可以根据消息内容,调用第二终端所需的函数,并以发布者的身份发布消息,使第二终端以订阅者的身份就接收到该反馈结果。
若第一终端根据标志位确定第二终端是再次与第一终端交互,则第一终端可以直接根据消息内容,调用第二终端所需的函数,并以发布者的身份发布消息,使第二终端以订阅者的身份就接收到该反馈结果。
若第二终端的状态是已注销,则第一终端可以在存储的数据中,删除第一标识与第二终端对应的信息。并且,还可以注销掉与第二终端对应的发布者。
本实施例提供的方法用于实现远程调用,该方法由设置有本实施例提供的方法的设备执行,该设备通常以硬件和/或软件的方式来实现。
本实施例提供的实现远程调用的方法,包括:第一终端注册为主题是第一标识的订阅者;所述第一终端接收第二终端发布的消息,其中,所述第二终端是主题为所述第一标识的发布者;所述第一终端根据所述消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述消息进行处理。本实施例提供的方法,能够基于MQTT协议实现RPC功能,通过两个终端互为发布者、订阅者的身份,进行信息传递,从而解决现有技术中需要通过网络编程的方式搭建RPC方案,使得方案实现过程更简单,也更加灵活。
图2为本发明另一示例性实施例示出的实现远程调用的方法的流程图。
如图2所示,本实施例提供的实现远程调用的方法,包括:
步骤201,第一终端注册为主题是第一标识的订阅者。
步骤201与步骤101的具体原理和实现方式类似,此处不再赘述。
步骤202,第一终端存储第一标识及其对应的功能函数。
其中,第一终端可以存储第一标识及其对应的可调用函数。具体可以存储可调用函数的名称。本实施例提供的方法中,第一终端中存储有可调用函数,其他终端可以以发布者的身份,发布主题为第一标识的消息,从而调用第一终端中的函数。
具体的,第一终端你可以注册成为多个第一标识的订阅者,此时,第一终端可以存储多个第一标识及其对应的可调用函数的对应关系。例如,第一终端可以设置数据Map,在其注册成为第一标识的订阅者后,就在数据Map存储第一标识及第一标识对应的可调用函数。若第一终端注册成为了多个第一标识的订阅者,例如终端A注册、终端A更新,则第一终端可以设置多个数据Map,用于存储与各个第一标识及其对应的可调用函数。
步骤203,第一终端接收第二终端发布的消息,其中,第二终端是主题为第一标识的发布者。
步骤203与步骤102的具体原理和实现方式类似,此处不再赘述。
步骤204,第一终端将接收的消息存储在预设消息队列中。
进一步的,第一终端注册成为第一标识的订阅者后,还可以创建消息队列,例如,可以创建名为QueueforServer的消息队列。
第一终端以订阅者的身份接收到第二终端发布的消息后,可以将消息存储在预设消息队列中,逐个或多个并行的处理,以免消息处理不及时造成遗漏。
步骤205,第一终端读取消息中包括的状态标志位,并根据状态标志位确定第二终端是否已注销。
若是,则执行步骤210;否则,执行步骤206。
其中,第二终端在发布消息时,可以在消息中设置标志位。第一终端可以先读取消息中的状态标志位,从而确定第二终端在网络中是否已注销。例如,若状态标志位是0,则第一终端可以确定第二终端已注销,若状态标志位是1,则第一终端可以确定第二终端是正常的。
具体的,第二终端可以在消息中设置名称为Regflag的标志位,该标志位并且可以在发送消息时,根据自身状态确定Regflag的值。该标志位可以在消息中占一个字节。
步骤206,第一终端读取消息中包括的第一标识标志位,并根据第一标识标志位确定第二终端与第一终端是否为首次连接。
进一步的,若第二终端未注销,则第一终端可以进一步的读取消息中的第一标识标志位。
实际应用时,第二终端可以注册为主题为第一标识的发布者,并发布主题为第一标识的消息,从而使作为第一标识订阅者的第一终端接收到该消息。第二终端在发布消息时,可以获取与第一标识对应的状态,并根据该状态写入消息中的第一标识标志位。
其中,第二终端与第一标识对应的状态可以是首次连接,也可以是再次连接。若第二终端与第一标识对应的终端未交互过,可以将第一标识标志位设置为首次连接对应的值,例如可以是1。当第二终端与第一标识对应的终端交互过,则可以将第一标识标志位设置为再次连接对应的值,例如可以是0。
具体的,消息中的标志位也可以是其他形式,例如,可以设置第一标志位以及第二标志位,第二终端可以根据不同状态设置标志位中的值。例如,若第二终端与第一标识对应的终端未交互过,则可以将第一标志位和第二标志位分别设置为非0的值和1;若第二终端已经在网络中注销,则可以将第一标志位和第二标志位分别设置为非0的值和0;若第二终端与第一标识对应的终端交互过,则可以将第一标志位设置为0。
进一步的,可以在第一终端中规定不同标志位的值对应的第二终端状态,从而使得第一终端可以根据读取的消息中的标志位的值,确定第二终端的状态。
若确定第二终端与第一终端为首次连接,则执行步骤207,若确定第二终端与第一终端为再次连接,则执行步骤209。
步骤207,第一终端根据消息确定第二终端信息,并存储第二终端信息。
实际应用时,若第二终端首次与第一终端进行交互,那么第一终端中就不会存储第二终端的相关信息。
其中,第二终端在发送消息时,可以在消息中写入自身的终端信息,具体可以是终端标识信息。第一终端可以从接收的消息中读取第二终端信息,具体可以读取第二终端标识信息。
具体的,由于第二终端发送的消息主题为第一标识,因此,第一终端可以存储第二终端信息与第一标识的对应关系。具体可以在第一标识对应的数据Map中存储第二终端信息,即数据Map中可以存储消息的主题,以及消息主题对应的发布者信息。
步骤208,第一终端还根据第二终端信息注册为主题是第二标识的发布者,其中,第二终端为主题是第二标识的订阅者。
进一步的,第二终端还可以注册为主题是第二标识的订阅者。该第二标识具体为第二终端信息,或根据第二终端信息确定的主题。
实际应用时,为了使第一终端能够向第二终端发布信息,第一终端可以根据第二终端信息注册为主题是第二标识的发布者。该第二标识可以具体为第二终端信息,也可以是根据第二终端信息确定的主题。第一终端可以调用MQTT协议,从而注册为主题是第二标识的发布者。
基于本步骤,第一终端与第二终端可以成为主题是第二标识的发布者、订阅者的一对终端。其中第一终端为发布者,第二终端为订阅者。同时第二终端与第一终端还是主题是第一标识的发布者、订阅者的一对终端,其中,第二终端为发布者,第一终端为订阅者。
步骤209,第一终端根据消息确定反馈结果,并以主题是第二标识的发布者的身份,发布反馈结果,以使第二终端以主题是第二标识的订阅者的身份接收反馈结果。
若第一终端确定第二终端与其是再次连接,则第一终端可以读取消息中所需调用的函数以及函数传入的参数,从而执行该函数并得到反馈结果。
其中,第一终端还可以读取消息中的第二终端信息,并根据第二终端信息确定对应的第二标识,从而以主题是第二标识的发布者身份,发布该反馈结果。作为主题是第二标识的订阅者,可以接收到这一消息,从而得到反馈结果。基于本步骤,可以实现第二终端跨端调用函数的方案。
步骤210,第一终端根据消息删除已存储的第二终端信息。
具体的,若第一终端确定第二终端已被注销,则可以删除存储的第二终端信息。具体可以删除第一标识对应的第二终端信息。例如,在第一标识对应的数据Map中存储有多个第二终端的信息,第一终端在对接收的消息进行处理时,确定第二终端B已被注销,则可以在第一标识对应的数据Map中删除第二终端B的信息。
步骤211,第一终端还注销主题是第二标识的发布者。
进一步的,由于第二终端已被注销,因此,第一终端无需再与第二终端进行交互,因此,还可以调用MQTT协议,注销主题是第二标识的发布者身份。
此外,本实施例提供的方法还可以包括第一终端注销订阅者的流程。
第一终端可以通过删除内部存储的第一标识相关信息,从而实现注销订阅者的流程。具体可以删除第一标识与可调用函数的对应关系,还可以删除第一标识与第二终端信息也就是发布者的对应关系。
图3为本发明又一示例性实施例示出的实现远程调用的方法的流程图。
如图3所示,本实施例提供的实现远程调用的方法包括:
步骤301,第二终端注册为主题是第一标识的发布者。
其中,本实施例提供的方法由第二终端来执行,第二终端具备计算能力,可以是计算机等独立的电子设备,也可以是其他电子设备内的处理器部件。本申请提供的方法,可以应用在多个终端直接,从而实现多终端的函数/方法的调用功能;也可以应用在同一个终端内置的多个芯片之间,从而实现多个芯片的函数/方法的调用功能。
具体的,第二终端内可以设置有MQTT协议。MQTT协议可以以极少的代码和有线的带宽,为连接远程设备提供实施可靠的消息服务。在MQTT协议中,可以包括三种身份。一种是发布者(publish),还有一种是代理(broker),第三种是订阅者(subscribe)。MQTT协议中,传输的消息分为两部分,一部分为主题(Topic),另一部分为负载(payload)。Topic是指消息的类型,订阅者订阅后,可以收到该类型的消息内容。payload即为消息内容。
本实施例提供的方法中,两个终端可以基于发布者以及订阅者的身份,传递信息,从而实现跨端调用函数以及方法。
进一步的,第二终端可以调用MQTT协议注册成为主题是第一标识的发布者。该第一标识可以是第一终端的标识,第一终端中存储有第二终端需要调用的函数,因此,第二终端可以注册为主题为第一标识的发布者,从而向第一终端发布需要调用函数的消息。相应的,第一终端可以注册为主题是第一标识的订阅者,从而使得第一终端接收到第二终端发布的消息。例如,第一终端在网络中的标识为终端A,则其可以注册为类型是终端A的订阅者;网络中还设置有终端B,终端B可以注册为主题是终端A的发布者,需要调用终端A的函数时,终端B可以发布Topic是终端A的消息。
步骤302,第二终端发布主题是第一标识的消息,消息中包括标志位,以使第一终端接收到消息,并根据标志位对消息进行处理;其中,第一终端为主题是第一标识的订阅者。
其中,第二终端发布的消息中可以携带有具体的信息,例如需要调用的函数名称,以及调用该函数时传入的参数。从而使第一终端可以基于这些信息确定反馈结果。
进一步的,第二终端发布的消息中还可以携带有标志位,用于标注自身的状态。例如,第二终端在注册成为Topic是第一标识的发布者、第二标识的订阅者后,可以将状态标志位设置为1,表明其未注销的状态。还可以设置第一标识标志位,用于标注第二终端与第一标识对应的终端的连接状态。例如,在第二终端完成注册后,可以将第一标识标志位设置为1,表明其还没有第一标识对应的终端进行过交互。若第二终端完成了与第一终端的交互,则可以将第一标识标志位设置为0,表明其已经与第一标识对应的终端交互过了。
实际应用时,第二终端可以注册多个主题的发布者,例如,第二终端需要与终端A、终端C进行交互,则其可以分别注册为主题是终端A、终端C的发布者。相应的,在发布消息时,消息内放置的标志位应当与该消息的类型对应。例如,终端B未与终端A交互过,则其首次发布Topic是终端A的消息时,消息内的第一标识标志位可以是1。若终端B已经与终端C交互过,则其再次发布Topic是终端C的消息时,消息内的第一标识标志位可以是0。
其中,第二终端可以在注册完成后,将与第一标识对应的第一标识标志位设置为1,当接收到终端发布的类型为第一标识的消息后,就将该第一标识标志位设置为0。此外,第二终端在注册完成后,可以将状态标志位设置为1,当第二终端被注销后,其可以将状态标志位设置为0。
具体的,第一终端接收到第二终端发布的消息后,可以读取其中的标志位,再确定具体的执行步骤。
进一步的,若第一终端根据标志位确定第二终端是首次与第一终端交互,则可以获取消息中包括的第二终端标识,并存储第二终端标识。具体可以存储第一标识、第二终端标识以及可调用函数的对应关系。
其中,为了使第一终端能够向第二终端反馈结果,第一终端还可以注册成为第二终端对应的发布者。具体可以基于第一终端接收的消息中第二终端的标识进行注册。
具体的,存储完毕后,第一终端可以根据消息内容,调用第二终端所需的函数,并以发布者的身份发布消息,使第二终端以订阅者的身份就接收到该反馈结果。
若第一终端根据标志位确定第二终端是再次与第一终端交互,则第一终端可以直接根据消息内容,调用第二终端所需的函数,并以发布者的身份发布消息,使第二终端以订阅者的身份就接收到该反馈结果。
若第二终端的状态是已注销,则第一终端可以在存储的数据中,删除第一标识与第二终端对应的信息。并且,还可以注销掉与第二终端对应的发布者。
本实施例提供的方法用于实现远程调用,该方法由设置有本实施例提供的方法的设备执行,该设备通常以硬件和/或软件的方式来实现。本实施例提供的实现远程调用的方法,包括:第二终端注册为主题是第一标识的发布者;第二终端发布主题是第一标识的消息,消息中包括标志位,以使第一终端接收到消息,并根据标志位对消息进行处理;其中,第一终端为主题是第一标识的订阅者。本实施例提供的方法,能够基于MQTT协议实现RPC功能,通过两个终端互为发布者、订阅者的身份,进行信息传递,从而解决现有技术中需要通过网络编程的方式搭建RPC方案,使得方案实现过程更简单,也更加灵活。
图4为本发明再一示例性实施例示出的实现远程调用的方法的流程图。
如图4所示,本实施例提供的实现远程调用的方法包括:
步骤401,第二终端注册为主题是第一标识的发布者,第二终端注册为主题是第二标识的订阅者。
步骤401中注册为第一标识的发布者与步骤301的具体原理和实现方式类似,此处不再赘述。
其中,第二终端还可以调用MQTT协议,注册为主题是第二标识的订阅者。该第二标识可以是第二终端的标识,例如,第二终端在网络中的标识为终端B,则其可以注册为Topic是终端B的订阅者,当其他终端想要连接第二终端时,可以发布主题是终端B的消息,从而使第二终端接收到该消息。例如,第一终端需要向终端B反馈结果时,就可以发布Topic是终端B的消息。当然,第一终端在发布消息之前,需要先注册成为Topic是终端B的发布者。
步骤402,第二终端发布主题是第一标识的消息,消息中包括标志位,以使第一终端接收到消息,并根据标志位对消息进行处理;其中,第一终端为主题是第一标识的订阅者。
步骤402与步骤302的具体原理和实现方式类似,此处不再赘述。
其中,消息中包括状态标志位,用于表示第二终端是否已注销。消息中包括第一标识标志位,用于表示第二终端与第一终端的连接状态。
具体的,第一终端接收到主题为第一标识的消息后,可以读取消息中包括的状态标志位,并根据状态标志位确定第二终端是否已注销。若未注销,则第一终端可以读取消息中包括的第一标识标志位,并根据第一标识标志位确定第二终端与第一终端是否为首次连接。
若第二终端的状态是首次与第一终端连接,则第一终端根据消息确定第二终端信息,并存储第二终端信息;第一终端还可以根据第二终端信息注册为主题是第二标识的发布者,其中,第二终端为主题是第二标识的订阅者。
具体的,由于第二终端发送的消息主题为第一标识,因此,第一终端可以存储第二终端信息与第一标识的对应关系。具体可以在第一标识对应的数据Map中存储第二终端信息,即数据Map中可以存储消息的主题,以及消息主题对应的发布者信息。
实际应用时,为了使第一终端能够向第二终端发布信息,第一终端可以根据第二终端信息注册为主题是第二标识的发布者。该第二标识可以具体为第二终端信息,也可以是根据第二终端信息确定的主题。第一终端可以调用MQTT协议,从而注册为主题是第二标识的发布者。
若第二终端的状态是再次与第一终端连接,第一终端根据消息确定反馈结果,并以主题是第二标识的发布者的身份,发布反馈结果,以使第二终端以主题是第二标识的订阅者的身份接收反馈结果。
此时,本实施例提供的方法还可已包括步骤403。
步骤403,第二终端接收第一终端发布的主题为第二标识的反馈结果,其中,第一终端是第二标识的发布者,反馈结果是第一终端根据第二终端发布的消息确定的。
若第一终端确定第二终端与其是再次连接,则第一终端可以读取消息中所需调用的函数以及函数传入的参数,从而执行该函数并得到反馈结果。
其中,第一终端还可以读取消息中的第二终端信息,并根据第二终端信息确定对应的第二标识,从而以主题是第二标识的发布者身份,发布该反馈结果。作为主题是第二标识的订阅者,可以接收到这一消息,从而得到反馈结果。基于本步骤,可以实现第二终端跨端调用函数的方案。
步骤404,第二终端将接收的反馈结果存储在预设消息队列中。
进一步的,第二终端注册成为第一标识的发布者以及第二标识的订阅者后,还可以创建消息队列,即可以在步骤401之后创建一个消息队列。例如,可以创建名为QueueforclientID的消息队列。
第二终端以订阅者的身份接收到第一终端发布的主题为第二标识的消息后,可以将消息存储在预设消息队列中,逐个或多个并行的处理,以免消息处理不及时造成遗漏。
若第二终端的状态是已注销,则第一终端根据消息删除已存储的第二终端信息;第一终端还注销主题是第二标识的发布者。
具体的,若第一终端确定第二终端已被注销,则可以删除存储的第二终端信息。具体可以删除第一标识对应的第二终端信息。例如,在第一标识对应的数据Map中存储有多个第二终端的信息,第一终端在对接收的消息进行处理时,确定第二终端B已被注销,则可以在第一标识对应的数据Map中删除第二终端B的信息。
进一步的,由于第二终端已被注销,因此,第一终端无需再与第二终端进行交互,因此,还可以调用MQTT协议,注销主题是第二标识的发布者身份。
图5为本发明一示例性实施例示出的实现远程调用的装置的结构图。
如图5所示,本实施例提供的实现远程调用的装置,包括:
注册模块51,用于注册为主题是第一标识的订阅者;
接收模块52,用于接收第二终端发布的消息,其中,所述第二终端是主题为所述第一标识的发布者;
确定模块53,用于根据所述消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述消息进行处理。
本实施例提供的实现远程调用的装置,包括:注册模块,用于注册为主题是第一标识的订阅者;接收模块,用于接收第二终端发布的消息,其中,第二终端是主题为第一标识的发布者;确定模块,用于根据消息中的标志位确定第二终端的状态,并根据第二终端的状态对消息进行处理。本实施例提供的实现远程调用的装置,能够基于MQTT协议实现RPC功能,通过两个终端互为发布者、订阅者的身份,进行信息传递,从而解决现有技术中需要通过网络编程的方式搭建RPC方案,使得方案实现过程更简单,也更加灵活。
本实施例提供的实现远程调用的装置的具体原理和实现方式均与图1所示的实施例类似,此处不再赘述。
图6为本发明另一示例性实施例示出的实现远程调用的装置的结构图。
如图6所示,在上述实施例的基础上,本实施例提供的实现远程调用的装置,所述确定模块53包括:
状态确定单元531,用于读取所述消息中包括的状态标志位,并根据所述状态标志位确定所述第二终端是否已注销。
所述状态确定单元531具体用于若所述第二终端未注销,则读取所述消息中包括的第一标识标志位,并根据所述第一标识标志位确定所述第二终端与所述第一终端是否为首次连接。
所述确定模块53还包括处理单元532,用于:
若所述第二终端的状态是首次与所述第一终端连接,则根据所述消息确定所述第二终端信息,并存储所述第二终端信息;
还根据所述第二终端信息注册为主题是第二标识的发布者,其中,所述第二终端为主题是第二标识的订阅者。
所述处理单元532还用于若所述第二终端的状态是再次与所述第一终端连接,则根据所述消息确定反馈结果,并以主题是所述第二标识的发布者的身份,发布所述反馈结果,以使所述第二终端以主题是所述第二标识的订阅者的身份接收所述反馈结果。
所述处理单元532还用于若所述第二终端的状态是已注销,则根据所述消息删除已存储的所述第二终端信息;还注销主题是第二标识的发布者。
所述装置还包括存储模块54,用于在注册为主题是第一标识的订阅者之后,存储所述第一标识及其对应的可调用函数。
所述存储模块54还用于在接收第二终端发布的消息之后,将接收的所述消息存储在预设消息队列中。
本实施例提供的实现远程调用的装置的具体原理和实现方式均与图2所示的实施例类似,此处不再赘述。
图7为本发明又一示例性实施例示出的实现远程调用的装置的结构图。
如图7所示,本实施例提供的实现远程调用的装置,包括:
注册模块71,用于注册为主题是第一标识的发布者;
发布模块72,用于发布主题是第一标识的消息,所述消息中包括标志位,以使第一终端接收到所述消息,并根据所述标志位对所述消息进行处理;其中,所述第一终端为主题是第一标识的订阅者。
本实施例提供的实现远程调用的装置,包括注册模块,用于注册为主题是第一标识的发布者;发布模块,用于发布主题是第一标识的消息,消息中包括标志位,以使第一终端接收到消息,并根据标志位对消息进行处理;其中,第一终端为主题是第一标识的订阅者。本实施例提供的装置,能够基于MQTT协议实现RPC功能,通过两个终端互为发布者、订阅者的身份,进行信息传递,从而解决现有技术中需要通过网络编程的方式搭建RPC方案,使得方案实现过程更简单,也更加灵活。
图8为本发明再一示例性实施例示出的实现远程调用的装置的结构图。
如图8所示,在上述实施例的基础上,本实施例提供的实现远程调用的装置,可选的,所述消息中包括状态标志位,用于表示所述第二终端是否已注销。
可选的,所述消息中包括第一标识标志位,用于表示所述第二终端与所述第一终端的连接状态。
所述注册模块71还用于注册为主题是第二标识的订阅者。
所述装置还包括接收模块73,用于接收所述第一终端发布的主题为所述第二标识的反馈结果,其中,所述第一终端是所述第二标识的发布者,所述反馈结果是所述第一终端根据所述发布模块72发布的消息确定的所述装置还包括存储模块74,用于将接收的所述反馈结果存储在预设消息队列中。
图9为本发明一示例性实施例示出的实现远程调用的设备的结构图。
如图9所示,本实施例提供的实现远程调用的设备包括:
存储器91;
处理器92;以及
计算机程序;
其中,所述计算机程序存储在所述存储器91中,并配置为由所述处理器92执行以实现如图1-2或图3-4任一种所述的实现远程调用的方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如图1-2或图3-4任一种所述的实现远程调用的方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (18)

1.一种实现远程调用的方法,其特征在于,包括:
第一终端注册为主题是第一标识的消息的订阅者;所述第一标识包括所述第一终端的标识以及所述第一终端具有的功能;
所述第一终端存储所述第一标识及其对应的功能函数;
所述第一终端接收第二终端发布的第一消息,其中,所述第二终端为所述主题是第一标识的消息的发布者;所述第一终端为所述第二终端提供调用服务;
所述第一终端根据所述第一消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述第一消息进行处理,以使所述第一终端调用所述第二终端需要的函数。
2.根据权利要求1所述的方法,其特征在于,所述第一终端根据所述第一消息中的标志位确定所述第二终端的状态,包括:
所述第一终端读取所述第一消息中包括的状态标志位,并根据所述状态标志位确定所述第二终端是否已注销。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述第二终端未注销,则所述第一终端读取所述第一消息中包括的第一标识标志位,并根据所述第一标识标志位确定所述第二终端与所述第一终端是否为首次连接。
4.根据权利要求3所述的方法,其特征在于,若所述第二终端的状态是首次与所述第一终端连接,则所述根据所述第二终端的状态对所述第一消息进行处理,包括:
所述第一终端根据所述第一消息确定所述第二终端信息,并存储所述第二终端信息;
所述第一终端还根据所述第二终端信息注册为主题是第二标识的发布者,其中,所述第二终端为主题是第二标识的订阅者。
5.根据权利要求4所述的方法,其特征在于,若所述第二终端的状态是再次与所述第一终端连接,则所述根据所述第二终端的状态对所述第一消息进行处理,包括:
所述第一终端根据所述第一消息确定反馈结果,并以主题是所述第二标识的发布者的身份,发布所述反馈结果,以使所述第二终端以主题是所述第二标识的订阅者的身份接收所述反馈结果。
6.根据权利要求4所述的方法,其特征在于,若所述第二终端的状态是已注销,则所述根据所述第二终端的状态对所述第一消息进行处理,包括:
所述第一终端根据所述第一消息删除已存储的所述第二终端信息;
所述第一终端还注销主题是第二标识的发布者。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述第一终端注册为主题是第一标识的订阅者之后,还包括:
所述第一终端存储所述第一标识及其对应的可调用函数。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述第一终端接收第二终端发布的第一消息之后,还包括:
所述第一终端将接收的所述第一消息存储在预设消息队列中。
9.一种实现远程调用的方法,其特征在于,包括:
第二终端注册为主题是第一标识的消息的发布者;所述第一标识包括第一终端的标识以及所述第一终端具有的功能;所述第一终端为所述第二终端提供调用服务;
所述第二终端发布主题是第一标识的第一消息,所述第一消息中包括标志位,以使第一终端接收到所述第一消息,并根据所述标志位对所述第一消息进行处理以调用所述第二终端需要的函数;其中,所述第一终端为主题是第一标识的消息订阅者。
10.根据权利要求9所述的方法,其特征在于,所述第一消息中包括状态标志位,用于表示所述第二终端是否已注销。
11.根据权利要求9所述的方法,其特征在于,所述第一消息中包括第一标识标志位,用于表示所述第二终端与所述第一终端的连接状态。
12.根据权利要求9所述的方法,其特征在于,还包括:
所述第二终端注册为主题是第二标识的订阅者。
13.根据权利要求12所述的方法,其特征在于,还包括:
所述第二终端接收所述第一终端发布的主题为所述第二标识的反馈结果,其中,所述第一终端是主题为所述第二标识的消息发布者,所述反馈结果是所述第一终端根据所述第二终端发布的第一消息确定的。
14.根据权利要求13所述的方法,其特征在于,还包括:
所述第二终端将接收的所述反馈结果存储在预设消息队列中。
15.一种实现远程调用的装置,用于第一终端,其特征在于,包括:
注册模块,用于注册为主题是第一标识的消息的订阅者;所述第一标识包括所述第一终端的标识以及所述第一终端具有的功能;
所述第一终端存储所述第一标识及其对应的功能函数;
接收模块,用于接收第二终端发布的第一消息,其中,所述第二终端为所述主题是第一标识的消息的发布者;
确定模块,用于根据所述第一消息中的标志位确定所述第二终端的状态,并根据所述第二终端的状态对所述第一消息进行处理,以使所述第一终端调用所述第二终端需要的函数。
16.一种实现远程调用的装置,用于第二终端,其特征在于,包括:
注册模块,用于注册为主题是第一标识的消息的发布者;所述第一标识包括第一终端的标识以及所述第一终端具有的功能;所述第一终端为所述第二终端提供调用服务;
发布模块,用于发布主题是第一标识的第一消息,所述第一消息中包括标志位,以使第一终端接收到所述第一消息,并根据所述标志位对所述第一消息进行处理以调用所述第二终端需要的函数;其中,所述第一终端为主题是第一标识的消息的订阅者。
17.一种实现远程调用的设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如权利要求1-8或9-14任一种所述的方法。
18.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如权利要求1-8或9-14任一种所述的方法。
CN201811648009.8A 2018-12-29 2018-12-29 实现远程调用的方法、装置、设备及计算机可读存储介质 Active CN109857572B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811648009.8A CN109857572B (zh) 2018-12-29 2018-12-29 实现远程调用的方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811648009.8A CN109857572B (zh) 2018-12-29 2018-12-29 实现远程调用的方法、装置、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109857572A CN109857572A (zh) 2019-06-07
CN109857572B true CN109857572B (zh) 2022-03-01

Family

ID=66893525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811648009.8A Active CN109857572B (zh) 2018-12-29 2018-12-29 实现远程调用的方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109857572B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112055061A (zh) * 2020-08-21 2020-12-08 烽火通信科技股份有限公司 分布式消息处理方法和设备
CN112134938B (zh) * 2020-09-09 2022-08-26 重庆易宠科技有限公司 一种消息处理方法、装置、终端及计算机可读存储介质
CN113454969B (zh) * 2020-12-31 2023-09-19 商汤国际私人有限公司 信息交互方法和装置、设备、系统及存储介质
CN114422591B (zh) * 2021-12-22 2023-01-10 广州市玄武无线科技股份有限公司 点对点通信方法、数据通信系统、计算机设备、存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101635716A (zh) * 2009-08-24 2010-01-27 北京星谷科技有限公司 一种对网络音视频编码器进行远程控制的方法及系统
CN101667926A (zh) * 2008-09-02 2010-03-10 中兴通讯股份有限公司 终端设备的远程管理方法和系统、代理设备
CN106411933A (zh) * 2016-11-15 2017-02-15 深圳市彬讯科技有限公司 一种可进行服务治理与语言调用的轻量级rpc框架
CN108984316A (zh) * 2018-06-15 2018-12-11 广州视源电子科技股份有限公司 一种用于分布式数据处理的方法、装置、电子设备及计算机存储介质
CN108989372A (zh) * 2017-06-02 2018-12-11 华为技术有限公司 服务发现的方法、注册中心和设备
CN109002362A (zh) * 2017-06-06 2018-12-14 阿里巴巴集团控股有限公司 一种服务方法、装置、系统以及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2345158A (en) * 1998-12-23 2000-06-28 Ibm Publish and subscribe data processing with ability to specify a local publication/subscription
US9338159B2 (en) * 2012-03-19 2016-05-10 Nokia Technologies Oy Method and apparatus for sharing wireless network subscription services
US9930103B2 (en) * 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
CN107592351B (zh) * 2017-09-06 2021-01-12 北京锐安科技有限公司 一种基于Redis的多用户发布订阅方法及系统
CN107888499A (zh) * 2017-11-17 2018-04-06 北京邮电大学 一种基于sdn的发布订阅系统及消息转发方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101667926A (zh) * 2008-09-02 2010-03-10 中兴通讯股份有限公司 终端设备的远程管理方法和系统、代理设备
CN101635716A (zh) * 2009-08-24 2010-01-27 北京星谷科技有限公司 一种对网络音视频编码器进行远程控制的方法及系统
CN106411933A (zh) * 2016-11-15 2017-02-15 深圳市彬讯科技有限公司 一种可进行服务治理与语言调用的轻量级rpc框架
CN108989372A (zh) * 2017-06-02 2018-12-11 华为技术有限公司 服务发现的方法、注册中心和设备
CN109002362A (zh) * 2017-06-06 2018-12-14 阿里巴巴集团控股有限公司 一种服务方法、装置、系统以及电子设备
CN108984316A (zh) * 2018-06-15 2018-12-11 广州视源电子科技股份有限公司 一种用于分布式数据处理的方法、装置、电子设备及计算机存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于HTML5的跨移动终端平台信息推送系统的设计与实现;王澎涛;《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》;20150815(第08期);I138-1638 *

Also Published As

Publication number Publication date
CN109857572A (zh) 2019-06-07

Similar Documents

Publication Publication Date Title
CN109857572B (zh) 实现远程调用的方法、装置、设备及计算机可读存储介质
CN107018147B (zh) 一种物联网通信方法及系统、网关模块
US20040186918A1 (en) Method and apparatus for dispatching incoming data in a multi-application terminal
US7296072B2 (en) Enhanced port type agnostic proxy support for web services intermediaries
US20050132086A1 (en) Port type agnostic proxy support for web services intermediaries
CN110808948B (zh) 远程过程调用方法、装置及系统
CN111163130B (zh) 一种网络服务系统及其数据传输方法
CN108390950A (zh) 一种消息推送方法、装置及设备
CN111818158B (zh) 网关控制方法、装置、电子设备及存储介质
CN112134915B (zh) 一种应用层协议解耦合的通用网络处理系统
KR101157039B1 (ko) Ddsb 통신 시스템 및 방법
CN106357654B (zh) 远程过程调用方法、装置及通信系统
CN112565439A (zh) 物联网通信方法与系统
CN112134907A (zh) 消息处理方法、装置及设备
US11582320B2 (en) Message transmitting and receiving method, communication apparatus, and program
US20060141997A1 (en) System and method for remote controlling equipment with the aid of api functions, and corresponding device, radiocommunication module, and set of functions
CN112181681A (zh) 一种远程调用方法、装置、计算机设备及存储介质
KR20040008189A (ko) 통신 시스템에서의 요구들
CN110008032B (zh) 一种通信方式的实现方法及电子设备
CN104270444A (zh) 一种可配置手机应用菜单的方法
CN114745153B (zh) WCF和log4net结合的链路跟踪方法
KR100915776B1 (ko) 웹 서비스 중개기를 위한 포트 타입 어그노스틱 프록시지원
US20220060567A1 (en) Remote Procedure Call Between Entities in a Service Bus Communication System
JP6148752B1 (ja) 移動体通信端末
CN115914319A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211021

Address after: 105 / F, building 1, No. 10, Shangdi 10th Street, Haidian District, Beijing 100085

Applicant after: Apollo Intelligent Technology (Beijing) Co.,Ltd.

Address before: 2 / F, baidu building, 10 Shangdi 10th Street, Haidian District, Beijing 100085

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant