CN109634751B - 一种利用electron框架实现应用层和底层通信的方法 - Google Patents
一种利用electron框架实现应用层和底层通信的方法 Download PDFInfo
- Publication number
- CN109634751B CN109634751B CN201811219390.6A CN201811219390A CN109634751B CN 109634751 B CN109634751 B CN 109634751B CN 201811219390 A CN201811219390 A CN 201811219390A CN 109634751 B CN109634751 B CN 109634751B
- Authority
- CN
- China
- Prior art keywords
- layer
- plug
- interface
- data
- json
- 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
Images
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/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- 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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种利用electron框架实现应用层和底层通信的方法,其特征在于,包含以下步骤:A、插件层的初始化:把插件层的接口和js层的接口形成映射,并在插件层做相关初始化工作;B、应用层跟插件层通信:js层通过调用与插件层映射的接口将数据传递给插件层,这些数据将会被封装成json流的格式,之后插件层又将会解析json流来判断调用对应的C/C++接口来实现功能;C、插件层跟应用层通信:插件层调用C/C++接口之后,将回调和返回的数据封装成json流的形式,传递给js层,完成整个通信过程。
Description
技术领域
本发明涉及一种通信方法,具体是一种利用electron框架实现应用层和底层通信的方法。
背景技术
JavaScript,在浏览器中,它操作DOM和BOM,在服务器端它操作FileSystem,HTTP,所以在任何环境,他都可以执行,即使是在几M的内存环境。在浏览器里,Web页面通常运行在一个沙盒环境里,它不能访问本地的资源。但是有很多相关模块都是能够通过C/C++进行访问,C/C++又恰好是跨平台的语言。这种情况下,electron的出现就将JavaScript和C/C++完美的结合,使之能够在electron的环境框架里面运行。
JSON(JavaScript Object Notation)是轻量级数据交换格式,它有如下优点1.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小,2.易于解析这种语言,客户端JavaScript可以简单的通过eval()进行JSON数据的读取,支持多种语言,包括(C、C++、Javascript等),正是基于它的这些优点,本发明的数据交互格式就是用的json的形式。
发明内容
本发明的目的在于提供一种利用electron框架实现应用层和底层通信的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种利用electron框架实现应用层和底层通信的方法,包含以下步骤:
A、插件层的初始化:把插件层的接口和js层的接口形成映射,并在插件层做相关初始化工作;
B、应用层跟插件层通信:js层通过调用与插件层映射的接口将数据传递给插件层,这些数据将会被封装成json流的格式,之后插件层又将会解析json流来判断调用对应的C/C++接口来实现功能;
C、插件层跟应用层通信:插件层调用C/C++接口之后,将回调和返回的数据封装成json流的形式,传递给js层,完成整个通信过程。
作为本发明的优选方案:所述步骤B中的数据包含Key、MsgID和Value字段。
作为本发明的优选方案:所述插件层是连接应用层和底层的中间层。
作为本发明的优选方案:所述步骤A具体包括如下步骤:(1)通过js require接口来加载插件,并进行相关初始化工作,(2)此时插件层会将js的接口和插件层的接口形成映射,(3)启动一个线程去监听js层发送过来的命令,(4)创建一个Async对象准备后面调用C/C++接口之后向js层发送封装好的json流数据。
作为本发明的优选方案:所述步骤B是通过google的V8引擎机制来实现js层和插件层数据传输交互。
作为本发明的优选方案:所述步骤B包括如下步骤:(1)js将需要发送给插件层的命令封装层json流数据的形式,js层调用步骤1中和插件层映射的接口将js层的数据将该数据传递给插件层,(2)插件层将这些命令存放在一个消息队列里面,此时步骤1中的那个解析js层发送过来的命令的线程就开始解析消息队列里面的命令,通过解析命令来决定调用底层哪个C/C++接口以及这个接口需要的参数(3)解析完成之后另起一个线程去执行对应接口,等待接口返回。
作为本发明的优选方案:所述步骤C中的C/C++接口执行过程中和执行完都可能会有数据产生并需要传递给上层,此时插件层会将回调的数据和接口返回的数据封装成json数据流,通过步骤A中创建的Async以异步的方式传递js层,js层解析数据将数据显示到对应的界面上。
与现有技术相比,本发明的有益效果是:本发明通信方式更简洁,规则更容易制定、数据占用内存小,解析更方便。
附图说明
图1为js层和底层进行数据交互的流程图。
图2为插件层跟js层通信流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,实施例1:本发明实施例中,一种利用electron框架实现应用层和底层通信的方法,包含以下步骤:
A、插件层的初始化:插件层是连接应用层和底层的中间层,本设计把插件层的接口和js层的接口形成映射,并在插件层做相关初始化工作;具体包括如下步骤:(1)通过jsrequire接口来加载插件,并进行相关初始化工作,(2)此时插件层会将js的接口和插件层的接口形成映射,(3)启动一个线程去监听js层发送过来的命令,(4)创建一个Async对象准备后面调用C/C++接口之后向js层发送封装好的json流数据;
B、应用层跟插件层通信:js层通过调用与插件层映射的接口将数据传递给插件层,这些数据将会被封装成json流的格式,主要包含Key、MsgID和Value等字段。之后插件层又将会解析json流来判断调用对应的C/C++接口来实现功能;包括如下步骤:(1)js将需要发送给插件层的命令封装层json流数据的形式,js层调用步骤1中和插件层映射的接口将js层的数据将该数据传递给插件层,(2)插件层将这些命令存放在一个消息队列里面,此时步骤1中的那个解析js层发送过来的命令的线程就开始解析消息队列里面的命令,通过解析命令来决定调用底层哪个C/C++接口以及这个接口需要的参数,(3)解析完成之后另起一个线程去执行对应接口,等待接口返回。
C、插件层跟应用层通信:插件层调用C/C++接口之后,将回调和返回的数据也封装层json流的形式,传递给js层,完成整个通信过程。步骤C中的C/C++接口执行过程中和执行完都可能会有数据产生并需要传递给上层,此时插件层会将回调的数据和接口返回的数据封装成json数据流,通过步骤A中创建的Async以异步的方式传递js层,js层解析数据将数据显示到对应的界面上。
实施例2:在实施例1的基础上,本设计的插件层跟js层通信流程图如图2所示,C/C++接口执行过程中和执行完都可能会有数据产生并需要传递给上层,此时插件层会将回调的数据和接口返回的数据封装成json数据流,此时的json流往往会有两个字段:Value和MsgID,Value是接口返回或者接口回调数据,MsgID是调用该C/C++接口事从js层传递过来的,此时我们在将其传回去,这样js层才能准确的找到调用此MsgID对应的C/C++接口返回过来的数据,不会跟其他接口返回的数据弄混。最后步骤1中创建的_async对象会调用send接口,send接口又会去调用asyncmsg接口,最终通过1中的Nan::Callback的指针对象callback的Call方法将封装好的json数据传递给js层,完成一个完整的通信过程。Async是一个我们自己封装的异步调用类,所以这个通信过程也是以异步的方式,不会形成阻塞。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (4)
1.一种利用electron框架实现应用层和底层通信的方法,其特征在于,包含以下步骤:
A、插件层的初始化:把插件层的接口和js层的接口形成映射,并在插件层做初始化工作,具体包括如下步骤:(1)通过js require接口来加载插件,并进行初始化工作,(2)此时插件层会将js的接口和插件层的接口形成映射,(3)启动一个线程去监听js层发送过来的命令,(4)创建一个Async对象准备后面调用C/C++接口之后向js层发送封装好的json流数据;
B、应用层跟插件层通信:js层通过调用与插件层映射的接口将数据传递给插件层,数据将会被封装成json流的格式,之后插件层又将会解析json流来判断调用对应的C/C++接口来实现功能,具体包括如下步骤:(1)js层将需要发送给插件层的命令封装成json流数据的形式,js层调用步骤A中和插件层映射的接口将js层的数据传递给插件层,(2)插件层将命令存放在一个消息队列里面,此时步骤A中的解析js层发送过来的命令的线程就开始解析消息队列里面的命令,通过解析命令来决定调用底层哪个C/C++接口以及接口需要的参数;(3)解析完成之后另起一个线程去执行对应接口,等待接口返回;
C、插件层跟应用层通信:插件层调用C/C++接口之后,将回调和返回的数据封装成json流的形式,传递给js层,完成整个通信过程,C/C++接口执行过程中和执行完都会有数据产生并需要传递给上层,此时插件层会将回调的数据和接口返回的数据封装成json数据流,通过步骤A中创建的Async以异步的方式传递js层,js层解析数据将数据显示到对应的界面上。
2.根据权利要求1所述的一种利用electron框架实现应用层和底层通信的方法,其特征在于,所述步骤B中的数据包含Key、MsgID和Value字段。
3.根据权利要求1所述的一种利用electron框架实现应用层和底层通信的方法,其特征在于,所述插件层是连接应用层和底层的中间层。
4.根据权利要求1所述的一种利用electron框架实现应用层和底层通信的方法,其特征在于,所述步骤B是通过google的V8引擎机制来实现js层和插件层数据传输交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811219390.6A CN109634751B (zh) | 2018-10-19 | 2018-10-19 | 一种利用electron框架实现应用层和底层通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811219390.6A CN109634751B (zh) | 2018-10-19 | 2018-10-19 | 一种利用electron框架实现应用层和底层通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634751A CN109634751A (zh) | 2019-04-16 |
CN109634751B true CN109634751B (zh) | 2022-11-29 |
Family
ID=66066431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811219390.6A Active CN109634751B (zh) | 2018-10-19 | 2018-10-19 | 一种利用electron框架实现应用层和底层通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634751B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110062177A (zh) * | 2019-04-22 | 2019-07-26 | 安徽辰希科技有限公司 | 一种超高分应用投屏管理系统 |
CN111131895B (zh) * | 2019-11-18 | 2022-05-27 | 晶晨半导体(深圳)有限公司 | 一种通过关于android的cec/arc开关与arc功放设备交互的方法 |
CN111309403B (zh) * | 2019-12-18 | 2023-05-12 | 上海金融期货信息技术有限公司 | 一种应用层延时数据异步打点采集组件 |
CN112035097B (zh) * | 2020-08-25 | 2023-10-13 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于银河锐华操作系统的c++适配层的装置 |
CN112379943A (zh) * | 2020-11-17 | 2021-02-19 | 北京高途云集教育科技有限公司 | Electron应用程序的插件应用方法及装置、存储介质 |
CN112822193B (zh) * | 2021-01-05 | 2023-03-24 | 网易(杭州)网络有限公司 | 应用通信方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007115031A2 (en) * | 2006-03-31 | 2007-10-11 | Interact Incorporated Software Systems | Method and system for processing xml-type telecommunications documents |
CN103064667A (zh) * | 2012-12-06 | 2013-04-24 | 郑州威科姆科技股份有限公司 | 一种基于JavaScript扩展控制硬件设备的方法 |
CN104461575A (zh) * | 2014-12-26 | 2015-03-25 | 北京华电万通科技有限公司 | 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法 |
CN105955786A (zh) * | 2016-05-17 | 2016-09-21 | 福建新大陆支付技术有限公司 | 一种基于html5的销售点终端的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100257539A1 (en) * | 2009-03-31 | 2010-10-07 | Krishnakumar Narayanan | System, method and apparatus for providing functions to applications on a digital electronic device |
-
2018
- 2018-10-19 CN CN201811219390.6A patent/CN109634751B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007115031A2 (en) * | 2006-03-31 | 2007-10-11 | Interact Incorporated Software Systems | Method and system for processing xml-type telecommunications documents |
CN103064667A (zh) * | 2012-12-06 | 2013-04-24 | 郑州威科姆科技股份有限公司 | 一种基于JavaScript扩展控制硬件设备的方法 |
CN104461575A (zh) * | 2014-12-26 | 2015-03-25 | 北京华电万通科技有限公司 | 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法 |
CN105955786A (zh) * | 2016-05-17 | 2016-09-21 | 福建新大陆支付技术有限公司 | 一种基于html5的销售点终端的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109634751A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634751B (zh) | 一种利用electron框架实现应用层和底层通信的方法 | |
US11016716B2 (en) | Picture interface display method and apparatus according to jump protocol | |
CN109800173A (zh) | 程序调试方法、装置及存储介质 | |
CN110489323B (zh) | 可视化的rpc api调试方法、装置、介质和设备 | |
US20230291980A1 (en) | Method and apparatus for video generation and displaying, device, and medium | |
CA2557111A1 (en) | System and method for building mixed mode execution environment for component applications | |
CN108572965A (zh) | 一种资源加载方法及装置 | |
CN105743955B (zh) | 一种扩展JavaScript对象方法 | |
US20220241689A1 (en) | Game Character Rendering Method And Apparatus, Electronic Device, And Computer-Readable Medium | |
KR101416100B1 (ko) | 하이브리드 웹 어플리케이션에서 자바스크립트 연동을 위한 인터페이스 | |
CN107315581A (zh) | 任务脚本生成装置及方法、任务调度系统及方法 | |
US10866818B2 (en) | Game rendering method, terminal device, and non-transitory computer-readable storage medium | |
CN112102437A (zh) | 一种基于Canvas的雷达图生成方法、装置、存储介质及终端 | |
CN112882709A (zh) | 基于容器引擎系统的渲染方法、装置、设备以及存储介质 | |
CN111427576B (zh) | 配置应用程序接口的方法、装置、存储介质及终端 | |
CN111857658A (zh) | 一种渲染动态组件的方法、装置、介质和电子设备 | |
US9614900B1 (en) | Multi-process architecture for a split browser | |
CN103870280B (zh) | 基于flex与jsp的网页无缝结合处理方法 | |
CN105407124B (zh) | 一种服务器控制方法及用户终端 | |
EP4343706A1 (en) | Data processing method and apparatus, and electronic device and storage medium | |
CN106453250A (zh) | 一种大数据rpc的处理方法 | |
CN111913711B (zh) | 视频渲染方法和装置 | |
CN116775174A (zh) | 一种基于用户界面框架的处理方法、装置、设备及介质 | |
CN110502418B (zh) | 一种实现远程调试的方法 | |
CN110262912A (zh) | 一种过程调用gRPC的调用方法及装置 |
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 |