CN113590356B - 数据通信方法、装置和电子设备 - Google Patents

数据通信方法、装置和电子设备 Download PDF

Info

Publication number
CN113590356B
CN113590356B CN202110877867.5A CN202110877867A CN113590356B CN 113590356 B CN113590356 B CN 113590356B CN 202110877867 A CN202110877867 A CN 202110877867A CN 113590356 B CN113590356 B CN 113590356B
Authority
CN
China
Prior art keywords
component
target
target data
data
function
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
CN202110877867.5A
Other languages
English (en)
Other versions
CN113590356A (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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202110877867.5A priority Critical patent/CN113590356B/zh
Publication of CN113590356A publication Critical patent/CN113590356A/zh
Application granted granted Critical
Publication of CN113590356B publication Critical patent/CN113590356B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Abstract

本公开提供了一种数据通信方法、装置和电子设备,通过第一组件生成目标数据包;通过目标数据包中的通信函数将其发送至目标组件;响应于第二组件监听到目标数据包,确定目标组件与第二组件相匹配;通过第二组件处理目标数据包中的目标数据,并通过目标数据包中的数据传递函数将得到的返回数据返回至第一组件。本实施例提供了相对统一的组件间的通信方式,在该方式中,在目标数据包中包括接收目标数据的目标组件的组件标识以及其他实现通信的必要信息,组件开发者在开发组件时无需再对组件类型进行区分,从而提升了开发效率,降低了开发成本。

Description

数据通信方法、装置和电子设备
技术领域
本公开涉及通信技术领域,尤其是涉及一种数据通信方法、装置和电子设备。
背景技术
Chrome浏览器或其他类型的浏览器通常提供扩展程序,该扩展程序是一种可以自定义浏览器行为,扩展浏览器功能的程序。扩展程序可以由不同的组件组成,如可以由background组件、popup组件或content scripts组件等组成,不同组件之间通常需要进行通信。相关技术中,通常基于浏览器提供的原始API,采用一次性连接方式或长连接方式进行通信,这两种通信方式需要在发送方和接收方中定义相同的自定义字段,以区分请求类型。当在项目中使用模块化开发且需要使用通信功能时,针对某个单独的模块,开发者将难以区分当前模块属于哪个组件,或者当前模块与哪个组件进行通信,需要开发者了解项目中的其他模块才能确定,该方式降低了开发效率,增加了开发成本。
发明内容
本公开的目的在于提供一种数据通信方法、装置和电子设备,以提高开发效率,降低开发成本。
本公开提供的一种数据通信方法,所述方法应用于运行有浏览器扩展程序的电子设备,所述浏览器扩展程序包括第一组件和第二组件;所述方法包括:通过所述第一组件生成目标数据包;所述目标数据包包括:目标数据、通信函数、接收所述目标数据的目标组件的组件标识和数据传递函数;通过所述通信函数,将所述目标数据包发送至所述目标组件;响应于所述第二组件监听到所述目标数据包,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配;通过所述第二组件处理所述目标数据,得到返回数据;通过所述数据传递函数将所述返回数据返回至所述第一组件。
进一步的,所述第一组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;所述第二组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;所述第一组件的组件标识和所述第二组件的组件标识不同。
进一步的,如果所述第一组件的组件标识为第三子组件,所述第二组件的组件标识为第一子组件或第二子组件,所述通信函数包括第一短连接通信函数;如果所述第一组件的组件标识为第一子组件或第二子组件,所述第二组件的组件标识为第三子组件,所述通信函数包括第二短连接通信函数;如果所述第一组件的组件标识为第二子组件,所述第二组件的组件标识为第一子组件,或者,所述第一组件的组件标识为第一子组件,所述第二组件的组件标识为第二子组件,所述通信函数包括第一短连接通信函数。
进一步的,所述第二组件中预先设置有监听函数;所述响应于所述第二组件监听到所述目标数据包,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配的步骤包括:响应于所述第二组件通过所述监听函数监听到所述目标数据包,判断所述目标数据包的目标数据中预设的指定字段是否与所述目标组件的组件标识相匹配;其中,所述指定字段用于指示:所述第二组件的组件标识;如果所述指定字段与所述目标组件的组件标识相匹配,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配。
进一步的,所述指定字段通过下述方式确定:如果所述第二组件不能访问浏览器的窗口对象,且所述第二组件存在自身对象,确定所述指定字段,以使所述指定字段用于指示所述第二组件为用于设置浏览器背景属性的第一子组件;如果所述第二组件能访问浏览器的窗口对象,且能访问浏览器扩展程序提供的指定应用程序接口,确定所述指定字段,以使所述指定字段用于指示所述第二组件为用于生成与用户交互的弹窗的第二子组件;如果所述第二组件能访问浏览器的窗口对象,且不能访问浏览器扩展程序提供的所述指定应用程序接口,确定所述指定字段,以使所述指定字段用于指示所述第二组件为用于读取、修改网页结构信息的第三子组件。
进一步的,所述目标数据包还包括:通信通道标识和所述第一组件的组件标识;所述电子设备中预先存储有至少一个处理函数;所述通信通道标识和所述第一组件的组件标识,与所述处理函数一一对应;所述通过所述第二组件处理所述目标数据,得到返回数据的步骤包括:基于所述通信通道标识和所述第一组件的组件标识,获取与所述通信通道标识和所述第一组件的组件标识相匹配的处理函数;通过所述处理函数处理所述目标数据,得到返回数据。
进一步的,所述返回数据中包括:状态码、数据结果和错误信息;其中,所述状态码用于:指示所述处理函数是否正确处理所述目标数据;所述数据结果用于:指示当所述处理函数正确处理所述目标数据时,所得到的数据处理结果;所述错误信息用于:指示当所述处理函数处理所述目标数据出现异常时的原因。
进一步的,所述电子设备中预先存储有至少一个处理函数;所述处理函数包括同步处理函数和/或异步处理函数;如果所述处理函数为所述异步处理函数,所述数据传递函数包括异步数据传递函数;所述通过所述数据传递函数将所述返回数据返回至所述第一组件的步骤包括:通过所述异步数据传递函数将所述返回数据返回至所述第一组件。
本公开提供的一种数据通信装置,所述装置设置于运行有浏览器扩展程序的电子设备,所述浏览器扩展程序包括第一组件和第二组件;所述装置包括:生成模块,用于通过所述第一组件生成目标数据包;所述目标数据包包括:目标数据、通信函数、接收所述目标数据的目标组件的组件标识和数据传递函数;发送模块,用于通过所述通信函数,将所述目标数据包发送至所述目标组件;确定模块,用于响应于所述第二组件监听到所述目标数据包,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配;处理模块,用于通过所述第二组件处理所述目标数据,得到返回数据;通过所述数据传递函数将所述返回数据返回至所述第一组件。
本公开提供的一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现上述数据通信方法。
本公开提供的一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述数据通信方法。
本公开提供的数据通信方法、装置和电子设备,首先通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数;然后通过通信函数,将目标数据包发送至目标组件;之后响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配;最后通过第二组件处理目标数据,得到返回数据;通过数据传递函数将返回数据返回至第一组件。本实施例提供了相对统一的组件间的通信方式,在该方式中,在目标数据包中包括接收目标数据的目标组件的组件标识以及其他实现通信的必要信息,组件开发者在开发组件时无需再对组件类型进行区分,从而提升了开发效率,降低了开发成本。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开其中一种实施例提供的一种数据通信方法的流程图;
图2为本公开其中一种实施例提供的一种数据通信方法的流程图;
图3为本公开其中一种实施例提供的一种数据通信方式示意图;
图4为本公开其中一种实施例提供的一种数据通信方法的流程图;
图5为本公开其中一种实施例提供的一种数据通信方法的流程图;
图6为本公开其中一种实施例提供的一种数据通信装置的结构示意图;
图7为本公开其中一种实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合实施例对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
Chrome浏览器或其他类型的浏览器通常提供扩展程序,该扩展程序是一种可以自定义浏览器行为,扩展浏览器功能的程序。以Chrome扩展程序为例,该Chrome扩展程序是一个小型的软件程序,它允许开发者扩展浏览器的功能,基于Chrome扩展程序的开发API,可以实现一些工具的应用,如翻译助手、网络代理等,还可以丰富网页内容,额外展示更多信息,甚至可以实现小游戏。一个Chrome扩展程序可以由不同的组件组成的,如,可以由background组件、popup组件、content scripts组件或options page组件等组成,各个组件的运行机制通常各不相同,可以根据实际需求,选择其中一个或多个组件组合成一个Chrome扩展程序,因此,在一个Chrome扩展程序中,通常存在不同的组件,不同组件之间通常需要进行通信,其中,涉及通信问题的通常是background组件、popup组件以及contentscripts组件这三类组件。
由于各组件的运行机制通常不同,导致各组件之间的通信方法存在差异;例如,content scripts组件运行在用户页面的上下文环境中,而不是运行在Chrome扩展程序的环境中;background组件和popup组件运行在Chrome扩展程序的环境中,但拥有各自的运行上下文;Chrome扩展程序可以提供各组件之间互相通信的方法,每个组件都可以向其他组件发送信息,同时可以通过同一个通道接收到响应,通常一个消息是一个标准的JSON(JavaScript Object Notation,JS对象简谱,是一种轻量级的数据交换格式)对象。
相关技术中,通常基于Chrome浏览器提供的原始API(Application ProgrammingInterface,应用程序接口)直接完成组件间的通信,Chrome浏览器可以提供一个简单的一次性连接方法,以及一个复杂的长连接方法。其中,一次性连接方法是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开连接,即每次连接只完成一项业务的发送;长连接方法是指在一个连接上可以连续发送多个数据包,如果采用长连接方法,该方法可以为连接的双方提供全双工的信息通道,一方可以给另一方发送JSON序列化数据,同时可以接收另一方返回的处理结果。一方通过调用runtime.connect或者tabs.connect发送数据,另一方通常需要设置runtime.onConnect监听连接事件,之后双方可以获得一个runtime.Port实例,通过该实例可以调用postMessage方法发送信息,可以设置onMessage监听函数接收信息。
然而,这种基于Chrome浏览器提供的原始API进行开发的方式通常存在下列缺点:
1.不论是采用一次性连接方法还是采用长连接方法,都需要在发送方和接收方中定义相同的自定义字段,以区分每一次请求的类型,比如,发送方需要定义字符串A,接收方也需要定义字符串A,通过设置同一种字段实现发送方与接收方之间的通信对接;当类似的逻辑比较多时,就需要在事件监听函数中通过一系列条件判断语句区分不同类型的请求。
2.当需要在项目中使用模块化开发且需要使用通信功能时,开发者必须清楚地知道当前模块开发的功能是应用于哪个组件,然而针对某个单独的模块,开发者难以区分当前模块属于哪个组件,该当前模块是与哪个组件进行通信,而要了解到这些信息,开发者必须了解项目中的其他模块才能确定,该方式降低了开发效率,增加了开发成本。
3.在一次性连接方法中,每个组件的监听函数都能接收和处理其他组件发送的消息,并且只有第一次调用sendResponse回调函数的接收方可以成功发送返回值,其他接收方返回的值将被忽略,由于没有明确的接收方,所以在项目运行时,更容易产生意料之外的错误。
4.当采用长连接方法时,使用双方必须协商好由谁开始连接,而另一方需要设置连接事件监听,双方连接成功后才能获得可用于通信的实例。当存在多个通信通道时,维护各个实例的连接与销毁将变得复杂繁琐,同时,当background组件开启事件模式或者是service worker,没有被销毁的实例将使background组件持续运行,从而造成资源浪费。
基于此,本公开实施例提供了一种数据通信方法、装置和电子设备,该技术可以应用于浏览器扩展程序中不同组件之间的通信。
为便于对本实施例进行理解,首先对本公开其中一种实施例所公开的一种数据通信方法进行详细介绍;方法应用于运行有浏览器扩展程序的电子设备,浏览器扩展程序包括第一组件和第二组件;该浏览器扩展程序可以是Chrome浏览器扩展程序,也可以是其他类型的浏览器的扩展程序;以浏览器扩展程序为Chrome浏览器扩展程序为例,该第一组件可以是background组件、popup组件或content scripts组件等,该第二组件也可以是background组件、popup组件或content scripts组件等,并且,第一组件和第二组件通常并不相同;如图1所示,该方法包括如下步骤:
步骤S102,通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数。
上述目标数据可以理解为需要通过第一组件向目标组件传输的数据;上述通信函数可以理解为能用于将目标数据包发送至目标组件的函数;上述目标组件可以理解为需要接收上述目标数据的组件;上述目标组件的组件标识可以用于指示该目标组件的类型,比如,该目标组件的组件标识可以是background组件、popup组件或content scripts组件等;在实际实现时,可以基于用户输入的需要传输的目标数据、接收目标数据的目标组件的组件标识,以及通信函数和数据传递函数,通过第一组件生成上述目标数据包。
步骤S104,通过通信函数,将目标数据包发送至目标组件。
通过目标数据包中的通信函数,可以将目标数据包发送至目标组件,比如,可以根据需要进行通信的第一组件的组件标识和目标组件的组件标识,选择runtime.sendMessage通信函数或tabs.sendMessage通信函数等,以通过所选择的通信函数将目标数据包发送至目标组件。
步骤S106,响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配。
在实际实现时,上述第二组件可以监听上述目标数据包,比如,可以通过在第二组件中预先设置的监听函数监听上述目标数据包;如果第二组件监听到了目标数据包,可以获取到该目标数据包,这时通常需要先判断目标数据包中目标组件的组件标识与该第二组件的组件标识是否相匹配,具体的,可以判断目标数据包中目标组件的组件标识与该第二组件的组件标识是否相同,以确认是否可以通过该第二组件处理目标数据包中的目标数据。
步骤S108,通过第二组件处理目标数据,得到返回数据;通过数据传递函数将返回数据返回至第一组件。
上述数据传递函数也可以称为回调函数,比如,该数据传递函数可以是sendResponse回调函数等;在实际实现时,如果通过判断确定目标组件的组件标识与第二组件的组件标识相匹配,则可以确认该第二组件即为上述目标数据包中的目标组件,可以通过该第二组件处理目标数据包中的目标数据,得到返回数据;通过调用数据传递函数,如调用sendResponse回调函数,可以将处理得到的返回数据返回至第一组件。
上述数据通信方法,首先通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数;然后通过通信函数,将目标数据包发送至目标组件;之后响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配;最后通过第二组件处理目标数据,得到返回数据;通过数据传递函数将返回数据返回至第一组件。本实施例提供了相对统一的组件间的通信方式,在该方式中,在目标数据包中包括接收目标数据的目标组件的组件标识以及其他实现通信的必要信息,组件开发者在开发组件时无需再对组件类型进行区分,从而提升了开发效率,降低了开发成本。
在一可选的实施方式中,该方法在上述实施例方法的基础上实现;该方法重点描述响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配的具体过程,具体对象步骤S206和步骤S208,该方法中,第二组件中预先设置有监听函数;如图2所示,该方法包括如下步骤:
步骤S202,通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数。
步骤S204,通过通信函数,将目标数据包发送至目标组件。
步骤S206,响应于第二组件通过监听函数监听到目标数据包,判断目标数据包的目标数据中预设的指定字段是否与目标组件的组件标识相匹配;其中,指定字段用于指示:第二组件的组件标识。
上述第二组件中通常预先设置有监听函数,可以通过runtime.onMessage.addListener方法设置该监听函数。如果第一组件发送了目标数据包,可以通过该监听函数监听到;上述指定字段可以是env私有字段;在实际实现时,可以定义统一的通信抽象,设计一个Connection类,对外主要提供send方法以及listen方法,该Connection类中包含上述指定字段,可以根据浏览器扩展程序中各组件的差异,设置该指定字段的值,以用于区分该类的实例对象用于哪种组件;在实际实现时,如果监听函数被触发,可以获得第一组件发送的目标数据包,这时通常需要判断目标数据包的目标数据中预设的指定字段是否与目标组件的组件标识相匹配,比如,如果预先设置有请求对象数据结构,目标组件的组件标识保存在请求对象数据结构的to字段,则可以比对该to字段的值与当前connection实例的env私有字段的参数是否匹配,从而确定是否有当前实例处理该目标数据包中的目标数据,例如,如果to字段的字段值为background,对env私有字段所设置的只读的字符串也是background,则确认to字段的值与env私有字段的参数相匹配。
具体的,该指定字段通过下述步骤一至步骤三确定:
步骤一,如果第二组件不能访问浏览器的窗口对象,且第二组件存在自身对象,确定指定字段,以使指定字段用于指示第二组件为用于设置浏览器背景属性的第一子组件。
上述浏览器的窗口对象也可以称为window对象,window对象表示浏览器中打开的窗口;上述自身对象也可以称为self对象,如果self在类方法中,则self表示当前类,如果self在对象方法中,则self表示调用当前对象方法的对象;上述第一子组件可以是background等可以用于设置浏览器背景属性的组件;其中,background也可以称为背景页,是Chrome扩展程序的一个组成部分,根据Chrome扩展程序版本的不同,其实现方式以及特性均有差异,比如,以Chrome扩展程序的版本为Manifest Version 3为例,在该版本中,background通常是一个service worker脚本,在某些事件触发时,该脚本将被激活,在空闲时该脚本将失活,这里service worker可以理解为浏览器在后台独立于网页运行的脚本,它可以拦截当前网站所有的请求,并进行判断,如果经判断确认需要向服务器发起请求的就转给服务器,如果可以直接使用缓存的就直接返回缓存不再转给服务器,从而可以提高浏览体验。如果第二组件不能访问浏览器的窗口对象,且第二组件存在自身对象,则所确定的指定字段可以指示第二组件为用于设置浏览器背景属性的第一子组件,比如,如果第二组件不能访问window对象,且存在self对象,所设置的指定字段可以指示该第二组件为background组件。
步骤二,如果第二组件能访问浏览器的窗口对象,且能访问浏览器扩展程序提供的指定应用程序接口,确定指定字段,以使指定字段用于指示第二组件为用于生成与用户交互的弹窗的第二子组件。
上述指定应用程序接口可以是tabs.*API,即Chrome.tabs对象提供的所有API;上述第二子组件可以是popup等可以生成与用户交互的弹窗的组件;其中,popup也可以称为弹窗页,是Chrome扩展程序的一个用户交互界面,用户通过点击该扩展程序的图标可以激活该用户交互界面,通常一个popup由标准的HTML(Hyper Text Markup Language,超文本标记语言)、CSS(Cascading Style Sheets,层叠样式表)以及JavaScript(一种具有函数优先的轻量级,解释型或即时编译型的编程语言)组成,可以访问Chrome扩展程序的接口。如果第二组件能访问浏览器的窗口对象,且能访问浏览器扩展程序提供的指定应用程序接口,则所确定的指定字段可以指示第二组件为用于生成与用户交互的弹窗的第二子组件,比如,如果第二组件可以访问window对象,且可以访问tabs.*API,所设置的指定字段可以指示该第二组件为popup组件。
步骤三,如果第二组件能访问浏览器的窗口对象,且不能访问浏览器扩展程序提供的指定应用程序接口,确定指定字段,以使指定字段用于指示第二组件为用于读取、修改网页结构信息的第三子组件。
上述第三子组件可以是content scripts等可以用于读取、修改网页结构信息的组件;其中,content scripts也可以称为用户脚本,是一段运行在网页上下文中的脚本,content scripts运行在一个被隔离的环境中,可以使用标准的文档对象模型读取网页结构信息并对其进行修改,但脚本内部的变量不会对原网页或Chrome扩展程序的其他部分可见,该content scripts仅可以使用少部分Chrome扩展程序的接口。如果第二组件能访问浏览器的窗口对象,且不能访问浏览器扩展程序提供的指定应用程序接口,则所确定的指定字段可以指示第二组件为读取、修改网页结构信息的第三子组件;比如,如果第二组件可以访问window对象,不能访问tabs.*API,所设置的指定字段可以指示该第二组件为contentscripts组件。
在实际实现时,上述第一组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;上述第二组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;第一组件的组件标识和第二组件的组件标识不同。
具体的,由于浏览器扩展程序中通常包括多个组件,每个组件都可以作为信息发送方发送数据,也可以作为信息接收方接收返回的数据;比如,以浏览器扩展程序为Chrome扩展程序,第一子组件为background组件,第二子组件为popup组件,第三子组件为contentscripts组件为例,则在Chrome扩展程序中包括background组件、popup组件和contentscripts组件,第一组件的组件标识可以是三种组件中的任意一个,第二组件的组件标识也可以是三种组件中的任意一个,并且,第一组件的组件标识和第二组件的组件标识不同,比如,如果第一组件的组件标识为background组件,则第二组件的组件标识可以是除background组件之外的popup组件或content scripts组件。
如果第一组件的组件标识为第三子组件,第二组件的组件标识为第一子组件或第二子组件,通信函数包括第一短连接通信函数;如果第一组件的组件标识为第一子组件或第二子组件,第二组件的组件标识为第三子组件,通信函数包括第二短连接通信函数;如果第一组件的组件标识为第二子组件,第二组件的组件标识为第一子组件,或者,第一组件的组件标识为第一子组件,第二组件的组件标识为第二子组件,通信函数包括第一短连接通信函数。
上述第一短连接通信函数可以是runtime.sendMessage通信函数等;上述第二短连接通信函数可以是tabs.sendMessage通信函数等;其中,runtime.sendMessage通信函数和tabs.sendMessage通信函数通常属于短连接通信方式,该短连接通信方式也可以称为一次性连接方式,信息发送方可以采用runtime.sendMessage通信函数或者tabs.sendMessage通信函数向信息接收方发送数据。
为方便说明,以第一子组件为background组件,第二子组件为popup组件,第三子组件为content scripts组件为例,参见图3所示的一种数据通信方式示意图,如果第一组件的组件标识为content scripts组件,第二组件的组件标识为background组件或popup组件,则实现content scripts组件向background组件或popup组件通信,通常采用runtime.sendMessage通信函数;如果第一组件的组件标识为popup组件或background组件,第二组件的组件标识为content scripts组件,则实现popup或background向contentscripts通信,通常采用tabs.sendMessage通信函数;如果第一组件的组件标识为popup组件,第二组件的组件标识为background,或者,如果第一组件的组件标识为background组件,第二组件的组件标识为popup组件,则实现popup组件向background组件通信,以及background组件向popup组件通信,通常均采用runtime.sendMessage通信函数。
步骤S208,如果指定字段与目标组件的组件标识相匹配,确定目标组件的组件标识与第二组件的组件标识相匹配。
如果目标数据中预设的指定字段与目标组件的组件标识相匹配,可以确定目标组件的组件标识与第二组件的组件标识相匹配;如果目标数据中预设的指定字段与目标组件的组件标识不匹配,可以确定目标组件的组件标识与第二组件的组件标识不匹配;比如,如果指定字段指示第二组件的组件标识为background组件,目标组件的组件标识也是background组件,则确认可以由该第二组件处理目标数据包中的目标数据。
步骤S210,通过第二组件处理目标数据,得到返回数据;通过数据传递函数将返回数据返回至第一组件。
下面对Chrome扩展程序提供的一次性连接方法进行说明,如果采用一次性连接方法,第一组件可以采用runtime.sendMessage或者tabs.sendMessage发送数据,该方法允许一方向另一方发送一个JSON序列化的数据,同时可以设置一个sendResponse回调函数,sendResponse回调函数的参数是第二组件经过该通道返回的值,即返回数据。第二组件需要通过runtime.onMessage设置一个事件监听函数,该监听函数负责监听传递过来的数据,在第二组件处理完成接收到的数据后,可以通过调用sendResponse回调函数将得到的返回数据返回至第一组件。
上述数据通信方法,首先通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数;通过通信函数,将目标数据包发送至目标组件;然后响应于第二组件通过监听函数监听到目标数据包,判断目标数据包的目标数据中预设的指定字段是否与目标组件的组件标识相匹配;如果指定字段与目标组件的组件标识相匹配,确定目标组件的组件标识与第二组件的组件标识相匹配;最后通过第二组件处理目标数据,得到返回数据;通过数据传递函数将返回数据返回至第一组件。本实施例提供了相对统一的组件间的通信方式,在该方式中,在目标数据包中包括接收目标数据的目标组件的组件标识以及其他实现通信的必要信息,组件开发者在开发组件时无需再对组件类型进行区分,从而提升了开发效率,降低了开发成本。
在一可选的实施方式中,该方法在上述实施例方法的基础上实现;该方法重点描述通过第二组件处理目标数据,得到返回数据的具体过程,具体对象步骤S408至步骤S410,该方法中,目标数据包还包括:通信通道标识和第一组件的组件标识;电子设备中预先存储有至少一个处理函数;通信通道标识和第一组件的组件标识,与处理函数一一对应;上述通信通道标识可以是通信通道名称,用于标识每一个通信通道;上述处理函数可以用于对第二组件接收到的目标数据进行处理;如图4所示,该方法包括如下步骤:
步骤S402,通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数。
在实际实现时,可以预先制定通信协议的请求对象数据结构,该请求对象数据结构中可以包括:name字段、from字段、to字段和data字段,其中,通信通道标识可以保存在name字段,第一组件的组件标识可以保存在from字段,以标识数据发送方属于哪种组件;目标组件的组件标识可以保存在to字段,以标识数据接收方属于哪种组件;目标数据可以保存在data字段中,以标识需要传输的数据;如果定义了统一的通信抽象,并设计一个Connection类,可以实现该Connection类的send方法,该send方法需要提供name字段的参数、from字段的参数、to字段的参数和data字段的参数,基于这些参数构造请求对象,将所构造的请求对象与通信函数和数据传递函数一起生成目标数据包,该方式可以根据Chrome扩展各组件的差异,识别当前调用模块属于哪种组件。
步骤S404,通过通信函数,将目标数据包发送至目标组件。
步骤S406,响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配。
步骤S408,基于通信通道标识和第一组件的组件标识,获取与通信通道标识和第一组件的组件标识相匹配的处理函数。
在实际实现时,如果定义了统一的通信抽象,并设计一个Connection类,可以实现该Connection类的listen方法,该listen方法需要提供通信通道标识、第一组件的组件标识和一个处理函数,在Connection类中可以维护一个map实例,用于保存每一个通信通道对应的处理函数。当用户使用listen方法监听一个通信通道时,可以将通信通道标识、第一组件的组件标识作为键,以处理函数为值,保存在map实例中;当确定目标组件的组件标识与第二组件的组件标识相匹配后,可以基于通信通道标识和第一组件的组件标识,在map实例中获取对应的处理函数;比如,可以根据请求对象中的name字段的值和from字段的值,在map实例中获得对应的处理函数。
步骤S410,通过处理函数处理目标数据,得到返回数据。
当获取到上述处理函数后,可以通过该处理函数处理目标数据,并得到对应的返回数据。该返回数据中包括:状态码、数据结果和错误信息;其中,状态码用于:指示处理函数是否正确处理目标数据;数据结果用于:指示当处理函数正确处理目标数据时,所得到的数据处理结果;错误信息用于:指示当处理函数处理目标数据出现异常时的原因。
上述返回数据也可以称为响应对象;可以预先制定通信协议的响应对象数据结构,该响应对象数据结构可以包括code字段、data字段和msg字段;上述状态码可以理解为数据接收方处理返回的状态码,可以用于指示处理函数是否正确处理目标数据,该状态码可以保存在code字段中;上述数据结果可以保存在data字段中;上述错误信息可以理解为数据接收方处理返回的错误信息,可以用于指示当处理函数处理目标数据出现异常时的原因,该错误信息可以保存在msg字段中;在实际实现时,可以预先设定处理函数处理目标数据正常或异常时,code字段的值,比如,如果处理函数正确处理目标数据,可以返回code字段的值为200,data字段的值为得到的数据处理结果,msg字段为空;如果处理函数处理目标数据时出现异常,可以返回code字段的值为500,data字段为空,msg字段的值是字符串,以描述处理异常的原因。
步骤S412,通过数据传递函数将返回数据返回至第一组件。
上述数据通信方法,首先通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数;通过通信函数,将目标数据包发送至目标组件;然后响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配;基于通信通道标识和第一组件的组件标识,获取与通信通道标识和第一组件的组件标识相匹配的处理函数。最后通过处理函数处理目标数据,得到返回数据。通过数据传递函数将返回数据返回至第一组件。本实施例提供了相对统一的组件间的通信方式,在该方式中,在目标数据包中包括接收目标数据的目标组件的组件标识以及其他实现通信的必要信息,组件开发者在开发组件时无需再对组件类型进行区分,从而提升了开发效率,降低了开发成本。
在一可选的实施方式中,该方法在上述实施例方法的基础上实现;该方法重点描述通过数据传递函数将返回数据返回至第一组件的具体过程,该方法中,电子设备中预先存储有至少一个处理函数;处理函数包括同步处理函数和/或异步处理函数;如果处理函数为异步处理函数,数据传递函数包括异步数据传递函数;在实际实现时,电子设备中预先存储的至少一个处理函数可能是同步处理函数,也可能是异步处理函数,也可能同时存在同步处理函数和异步处理函数;如果处理函数为异步处理函数,则目标数据包中的数据传递函数通常为异步数据传递函数如图5所示,该方法包括如下步骤:
步骤S502,通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数。
步骤S504,通过通信函数,将目标数据包发送至目标组件。
步骤S506,响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配。
步骤S508,通过第二组件处理目标数据,得到返回数据。
步骤S510,通过异步数据传递函数将返回数据返回至第一组件。
在实际实现时,如果处理函数是同步处理函数,可以根据同步处理函数调用是否存在异常,以及同步处理函数的执行结果得到上述返回数据。可以采用sendResponse回调函数,将返回数据返回至第一组件。
如果处理函数是异步处理函数,则数据传递函数通常为异步数据传递函数,具体的,如果预先设置有请求对象数据结构,则可以在请求对象数据结构中设计一字段,如redirect字段,通过该redirect字段可以保存异步回调的通信通道名称,对于返回数据来说,可以预先设定code字段的值以指示需要进行异步回调,比如,可以设定code字段的值为303时,对应异步回调的处理过程;第一组件在调用send方法时,方法内部将自动调用listen方法设置一个特定通信通道,并将该特定通信通道的通道名称设置在请求对象中的redirect字段中,该特定通信通道可以是随机选择的通信通道;第二组件在调用异步处理函数时,将同步返回一个状态码为303的响应对象,告知第一组件需要通过特定通信通道等待异步处理函数的返回数据;第二组件在异步处理函数调用完毕后,将处理得到的返回数据通过特定通信通道发送给第一组件,完成异步处理函数的处理流程。
上述数据通信方法,提供了一个可以在Chrome扩展程序的所有组件中直接用于互相通信的统一抽象;基于Chrome扩展的一次性连接方法,通过自定义通信协议,实现适用于Chrome扩展各组件的一致的通信方法。该方法中,开发者无需关注Chrome扩展程序提供的通信方法的不足,可以使开发者对不同的接收监听事件进行解耦,明确通信的双方是哪些组件,并且,开发者无需区别接收监听事件返回数据是同步还是异步,可以正确处理同步和异步的返回值,本公开基于自定义协议以异步返回值的方式统一处理事件返回值,其中还包括状态码以及错误信息,可以通过Chrome扩展程序一次性连接的通信方法以及所设计的协议,实现接收方的异步函数处理。
本公开其中一种实施例提供了一种数据通信装置的结构示意图,该装置设置于运行有浏览器扩展程序的电子设备,浏览器扩展程序包括第一组件和第二组件;如图6所示,该装置包括:生成模块60,用于通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数;发送模块61,用于通过通信函数,将目标数据包发送至目标组件;确定模块62,用于响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配;处理模块63,用于通过第二组件处理目标数据,得到返回数据;通过数据传递函数将返回数据返回至第一组件。
上述数据通信装置,首先通过第一组件生成目标数据包;目标数据包包括:目标数据、通信函数、接收目标数据的目标组件的组件标识和数据传递函数;然后通过通信函数,将目标数据包发送至目标组件;之后响应于第二组件监听到目标数据包,确定目标组件的组件标识与第二组件的组件标识相匹配;最后通过第二组件处理目标数据,得到返回数据;通过数据传递函数将返回数据返回至第一组件。本实施例提供了相对统一的组件间的通信方式,在该装置中,在目标数据包中包括接收目标数据的目标组件的组件标识以及其他实现通信的必要信息,组件开发者在开发组件时无需再对组件类型进行区分,从而提升了开发效率,降低了开发成本。
在一可选的实施方式中,第一组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;第二组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;第一组件的组件标识和第二组件的组件标识不同。
在一可选的实施方式中,如果第一组件的组件标识为第三子组件,第二组件的组件标识为第一子组件或第二子组件,通信函数包括第一短连接通信函数;如果第一组件的组件标识为第一子组件或第二子组件,第二组件的组件标识为第三子组件,通信函数包括第二短连接通信函数;如果第一组件的组件标识为第二子组件,第二组件的组件标识为第一子组件,或者,第一组件的组件标识为第一子组件,第二组件的组件标识为第二子组件,通信函数包括第一短连接通信函数。
在一可选的实施方式中,第二组件中预先设置有监听函数;响应于第二组件监听到目标数据包,确定模块62还用于:响应于第二组件通过监听函数监听到目标数据包,判断目标数据包的目标数据中预设的指定字段是否与目标组件的组件标识相匹配;其中,指定字段用于指示:第二组件的组件标识;如果指定字段与目标组件的组件标识相匹配,确定目标组件的组件标识与第二组件的组件标识相匹配。
在一可选的实施方式中,装置还包括指定字段确定模块,该指定字段确定模块用于:如果第二组件不能访问浏览器的窗口对象,且第二组件存在自身对象,确定指定字段,以使指定字段用于指示第二组件为用于设置浏览器背景属性的第一子组件;如果第二组件能访问浏览器的窗口对象,且能访问浏览器扩展程序提供的指定应用程序接口,确定指定字段,以使指定字段用于指示第二组件为用于生成与用户交互的弹窗的第二子组件;如果第二组件能访问浏览器的窗口对象,且不能访问浏览器扩展程序提供的指定应用程序接口,确定指定字段,以使指定字段用于指示第二组件为用于读取、修改网页结构信息的第三子组件。
在一可选的实施方式中,目标数据包还包括:通信通道标识和第一组件的组件标识;电子设备中预先存储有至少一个处理函数;通信通道标识和第一组件的组件标识,与处理函数一一对应;处理模块63还用于:基于通信通道标识和第一组件的组件标识,获取与通信通道标识和第一组件的组件标识相匹配的处理函数;通过处理函数处理目标数据,得到返回数据。
在一可选的实施方式中,返回数据中包括:状态码、数据结果和错误信息;其中,状态码用于:指示处理函数是否正确处理目标数据;数据结果用于:指示当处理函数正确处理目标数据时,所得到的数据处理结果;错误信息用于:指示当处理函数处理目标数据出现异常时的原因。
在一可选的实施方式中,电子设备中预先存储有至少一个处理函数;处理函数包括同步处理函数和/或异步处理函数;如果处理函数为异步处理函数,数据传递函数包括异步数据传递函数;处理模块63还用于:通过异步数据传递函数将返回数据返回至第一组件。
本公开其中一种实施例所提供的数据通信装置,其实现原理及产生的技术效果和前述数据通信方法实施例相同,为简要描述,数据通信装置实施例部分未提及之处,可参考前述数据通信方法实施例中相应内容。
本公开实施例还提供了一种电子设备,参见图7所示,该电子设备包括处理器130和存储器131,该存储器131存储有能够被处理器130执行的机器可执行指令,该处理器130执行机器可执行指令以实现上述数据通信方法。
进一步地,图7所示的电子设备还包括总线132和通信接口133,处理器130、通信接口133和存储器131通过总线132连接。
其中,存储器131可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口133(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线132可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器130可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器130中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器130可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器131,处理器130读取存储器131中的信息,结合其硬件完成前述实施例的方法的步骤。
本公开实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述数据通信方法,具体实现可参见方法实施例,在此不再赘述。
本公开实施例所提供的数据通信方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。

Claims (11)

1.一种数据通信方法,其特征在于,所述方法应用于运行有浏览器扩展程序的电子设备,所述浏览器扩展程序包括第一组件和第二组件;所述方法包括:
通过所述第一组件生成目标数据包;所述目标数据包包括:目标数据、通信函数、接收所述目标数据的目标组件的组件标识和数据传递函数;
通过所述通信函数,将所述目标数据包发送至所述目标组件;
响应于所述第二组件监听到所述目标数据包,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配;
通过所述第二组件处理所述目标数据,得到返回数据;通过所述数据传递函数将所述返回数据返回至所述第一组件。
2.根据权利要求1所述的方法,其特征在于,
第一组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;
所述第二组件的组件标识包括:用于设置浏览器背景属性的第一子组件、用于生成与用户交互的弹窗的第二子组件,或者,用于读取、修改网页结构信息的第三子组件;所述第一组件的组件标识和所述第二组件的组件标识不同。
3.根据权利要求2所述的方法,其特征在于,如果所述第一组件的组件标识为第三子组件,所述第二组件的组件标识为第一子组件或第二子组件,所述通信函数包括第一短连接通信函数;
如果所述第一组件的组件标识为第一子组件或第二子组件,所述第二组件的组件标识为第三子组件,所述通信函数包括第二短连接通信函数;
如果所述第一组件的组件标识为第二子组件,所述第二组件的组件标识为第一子组件,或者,所述第一组件的组件标识为第一子组件,所述第二组件的组件标识为第二子组件,所述通信函数包括第一短连接通信函数。
4.根据权利要求1所述的方法,其特征在于,所述第二组件中预先设置有监听函数;所述响应于所述第二组件监听到所述目标数据包,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配的步骤包括:
响应于所述第二组件通过所述监听函数监听到所述目标数据包,判断所述目标数据包的目标数据中预设的指定字段是否与所述目标组件的组件标识相匹配;其中,所述指定字段用于指示:所述第二组件的组件标识;
如果所述指定字段与所述目标组件的组件标识相匹配,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配。
5.根据权利要求4所述的方法,其特征在于,所述指定字段通过下述方式确定:
如果所述第二组件不能访问浏览器的窗口对象,且所述第二组件存在自身对象,确定所述指定字段,以使所述指定字段用于指示所述第二组件为用于设置浏览器背景属性的第一子组件;
如果所述第二组件能访问浏览器的窗口对象,且能访问浏览器扩展程序提供的指定应用程序接口,确定所述指定字段,以使所述指定字段用于指示所述第二组件为用于生成与用户交互的弹窗的第二子组件;
如果所述第二组件能访问浏览器的窗口对象,且不能访问浏览器扩展程序提供的所述指定应用程序接口,确定所述指定字段,以使所述指定字段用于指示所述第二组件为用于读取、修改网页结构信息的第三子组件。
6.根据权利要求1所述的方法,其特征在于,所述目标数据包还包括:通信通道标识和第一组件的组件标识;所述电子设备中预先存储有至少一个处理函数;所述通信通道标识和所述第一组件的组件标识,与所述处理函数一一对应;所述通过所述第二组件处理所述目标数据,得到返回数据的步骤包括:
基于所述通信通道标识和所述第一组件的组件标识,获取与所述通信通道标识和所述第一组件的组件标识相匹配的处理函数;
通过所述处理函数处理所述目标数据,得到返回数据。
7.根据权利要求6所述的方法,其特征在于,所述返回数据中包括:状态码、数据结果和错误信息;其中,所述状态码用于:指示所述处理函数是否正确处理所述目标数据;所述数据结果用于:指示当所述处理函数正确处理所述目标数据时,所得到的数据处理结果;所述错误信息用于:指示当所述处理函数处理所述目标数据出现异常时的原因。
8.根据权利要求1所述的方法,其特征在于,所述电子设备中预先存储有至少一个处理函数;所述处理函数包括同步处理函数和/或异步处理函数;如果所述处理函数为所述异步处理函数,所述数据传递函数包括异步数据传递函数;
所述通过所述数据传递函数将所述返回数据返回至所述第一组件的步骤包括:
通过所述异步数据传递函数将所述返回数据返回至所述第一组件。
9.一种数据通信装置,其特征在于,所述装置设置于运行有浏览器扩展程序的电子设备,所述浏览器扩展程序包括第一组件和第二组件;所述装置包括:
生成模块,用于通过所述第一组件生成目标数据包;所述目标数据包包括:目标数据、通信函数、接收所述目标数据的目标组件的组件标识和数据传递函数;
发送模块,用于通过所述通信函数,将所述目标数据包发送至所述目标组件;
确定模块,用于响应于所述第二组件监听到所述目标数据包,确定所述目标组件的组件标识与所述第二组件的组件标识相匹配;
处理模块,用于通过所述第二组件处理所述目标数据,得到返回数据;通过所述数据传递函数将所述返回数据返回至所述第一组件。
10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-8任一项所述的数据通信方法。
11.一种机器可读存储介质,其特征在于,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现权利要求1-8任一项所述的数据通信方法。
CN202110877867.5A 2021-07-29 2021-07-29 数据通信方法、装置和电子设备 Active CN113590356B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110877867.5A CN113590356B (zh) 2021-07-29 2021-07-29 数据通信方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110877867.5A CN113590356B (zh) 2021-07-29 2021-07-29 数据通信方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN113590356A CN113590356A (zh) 2021-11-02
CN113590356B true CN113590356B (zh) 2023-08-11

Family

ID=78253413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110877867.5A Active CN113590356B (zh) 2021-07-29 2021-07-29 数据通信方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN113590356B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763329A (zh) * 2009-12-18 2010-06-30 中国电子科技集团公司第七研究所 一种数据通信方法及一种数据通信装置
CN107294911A (zh) * 2016-03-31 2017-10-24 华为技术有限公司 一种数据包监听方法及装置、远程过程调用系统、设备
CN108322443A (zh) * 2017-12-30 2018-07-24 京信通信系统(中国)有限公司 设备交互通信方法、装置、存储介质及计算机设备
CN110768820A (zh) * 2019-09-11 2020-02-07 厦门科灿信息技术有限公司 一种基于snmp协议的数据通信方法及相关设备
CN111770009A (zh) * 2020-06-29 2020-10-13 深圳市金蝶天燕云计算股份有限公司 一种数据传输方法及相关设备
CN112235279A (zh) * 2020-10-10 2021-01-15 北京百度网讯科技有限公司 用于应用间通信的方法、装置、电子设备及可读存储介质
CN112394916A (zh) * 2020-11-17 2021-02-23 平安信托有限责任公司 数据交互方法、装置、设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110219387A1 (en) * 2010-03-04 2011-09-08 Microsoft Corporation Interactive Remote Troubleshooting of a Running Process
JP6139857B2 (ja) * 2012-01-26 2017-05-31 キヤノン株式会社 データ処理装置、入力制御装置、及び制御方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763329A (zh) * 2009-12-18 2010-06-30 中国电子科技集团公司第七研究所 一种数据通信方法及一种数据通信装置
CN107294911A (zh) * 2016-03-31 2017-10-24 华为技术有限公司 一种数据包监听方法及装置、远程过程调用系统、设备
CN108322443A (zh) * 2017-12-30 2018-07-24 京信通信系统(中国)有限公司 设备交互通信方法、装置、存储介质及计算机设备
CN110768820A (zh) * 2019-09-11 2020-02-07 厦门科灿信息技术有限公司 一种基于snmp协议的数据通信方法及相关设备
CN111770009A (zh) * 2020-06-29 2020-10-13 深圳市金蝶天燕云计算股份有限公司 一种数据传输方法及相关设备
CN112235279A (zh) * 2020-10-10 2021-01-15 北京百度网讯科技有限公司 用于应用间通信的方法、装置、电子设备及可读存储介质
CN112394916A (zh) * 2020-11-17 2021-02-23 平安信托有限责任公司 数据交互方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姚雷 ; 卢晓东 ; 万江文 ; .光伏发电监控系统中嵌入式Web服务器的实现.计算机工程与设计.2012,(09),第3397-3401页. *

Also Published As

Publication number Publication date
CN113590356A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
US8676903B2 (en) System and method to control email whitelists
US8856325B2 (en) Network element failure detection
US20060248406A1 (en) Method for handling a detected error in a script-based application
WO2016184266A1 (zh) 一种预警方法、装置及处理服务器
CN103856446A (zh) 一种登录方法、装置及开放平台系统
RU2610584C2 (ru) Способ обработки электронного сообщения и сервер, используемый в нем
US20150365420A1 (en) A secure user interaction method performing defined actions on web resources over a separate channel and a system thereof
CN110278256B (zh) 区块链节点接入上链方法、相关设备及系统
CN113360301B (zh) 一种消息传输系统及方法
CN111510446B (zh) 一种攻击检测方法、装置及电子设备和存储介质
GB2529377A (en) Communication between frames of a web browser
CN108156121A (zh) 流量劫持的监控方法及装置、流量劫持的报警方法及装置
CN111008254B (zh) 一种对象创建方法、装置、计算机设备和存储介质
CN112261111A (zh) 一种应用程序内浏览器跨域访问实现方法及系统
CN111930531A (zh) 数据处理、数据生产、数据消费方法、装置、设备及介质
CN113590356B (zh) 数据通信方法、装置和电子设备
WO2019119974A1 (zh) 对象上传方法及装置
CN112565277B (zh) 一种数据传输方法、系统及电子设备
TW201800993A (zh) 支付方法、系統、支付轉換方法以及支付轉換裝置
CN115017428A (zh) 一种信息显示方法、装置、系统及存储介质
CN113726855B (zh) 服务聚合方法、装置、电子设备以及计算机可读存储介质
WO2018196613A1 (zh) 一种基于功能开关的应用程序控制方法、装置、服务器及介质
US20210303270A1 (en) Code generation for log-based mashups
CN109660573B (zh) 数据传输方法和装置
CN114448703B (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