CN108733495B - 用于实现跨平台通信的方法和设备 - Google Patents
用于实现跨平台通信的方法和设备 Download PDFInfo
- Publication number
- CN108733495B CN108733495B CN201710241440.XA CN201710241440A CN108733495B CN 108733495 B CN108733495 B CN 108733495B CN 201710241440 A CN201710241440 A CN 201710241440A CN 108733495 B CN108733495 B CN 108733495B
- Authority
- CN
- China
- Prior art keywords
- event
- share
- tag
- upnp
- cross
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- 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/541—Interprogram communication via adapters, e.g. between incompatible applications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请的目的是提供一种用于实现跨平台通信的方法和设备,通过定义<share>标签,所述标签包括两个以上接口;对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;建立客户端和服务端之间的跨平台通信网络协议栈;根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务。能实现应用跨平台功能,应用可以在多种平台上支持跨平台通信功能,而不仅限于同平台。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种用于实现跨平台通信的技术。
背景技术
Html是W3C发布的一种技术标准,同时也是一种编程语言,基于各种标签及相关的接口及属性,同CSS(Cascading Style Sheet,层叠样式表)和JS(JavaScript,一种用于实现网络应用的脚本语言)等实现网络应用。目前最新的版本为html5。Html是一种弱语言,本身不需要编译,只需要html解析引擎直接解析即可运行。一般的html解析引擎如Webkit,Blink,Trident,Gecko等。大部分现代浏览器已经具备了某些HTML5支持。但是由于html5属于技术前端的内容,很多技术还在发展中。例如html5规范的跨平台信息共享方面,在已经发布的规范当中,并没有规定。
目前各平台自带的通信功能,仅限于同平台,例如,安卓(Android)自带视频分享无线协议(miracast)通信应用仅限于Android平台使用;Linux类***应用仅限于同架构同平台的应用;iOS应用仅限于iOS使用。当然Android和iOS设备之间可以实现相互通信,但这种通信仅仅限定于网络协议的跨平台通信,而不是应用级别的跨平台通信。
发明内容
本申请的目的是提供一种用于实现跨平台通信的方法与设备,能够解决现有技术中不能使应用在多种平台上支持跨平台通信功能的问题。
根据本申请的一个方面,提供了一种用于实现跨平台通信的方法,包括:
定义<share>标签,所述标签包括两个以上接口;
对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;
建立客户端和服务端之间的跨平台通信网络协议栈;
根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务。
根据本申请的另一方面,还提供了一种用于实现跨平台通信的设备,包括:
定义装置,用于定义<share>标签,所述标签包括两个以上接口;
解析装置,用于对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;
建立装置,用于建立客户端和服务端之间的跨平台通信网络协议栈;
通信装置,用于根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务。
与现有技术相比,本申请通过定义<share>标签,所述标签包括两个以上接口;对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;建立客户端和服务端之间的跨平台通信网络协议栈;根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务。能实现应用跨平台功能,应用可以在多种平台上支持跨平台通信功能,而不仅限于同平台。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于实现跨平台通信的设备结构示意图;
图2示出本申请涉及的BesTV TVOS架构图;
图3示出根据本申请一个方面的一个优选实施例中用于实现跨平台通信的设备模块的示意图;
图4示出根据本申请一个方面的一个优选实施例的解析装置的结构示意图;
图5示出根据本申请另一个方面的一种用于实现跨平台通信的设备结构示意图;
图6示出根据本申请另一个方面的一个优选实施例的步骤S12的流程示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
图1示出根据本申请一个方面的一种用于实现跨平台通信的设备结构示意图;所述设备1包括定义装置11、解析装置12、建立装置13和通信装置14。其中,定义装置11定义<share>标签,所述标签包括两个以上接口;解析装置12对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;建立装置13建立客户端和服务端之间的跨平台通信网络协议栈;通信装置14根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务。
本申请所述的用于实现跨平台通信的设备是基于BesTV TVOS实现的跨平台通信,用于电视业务,包括但不限于ott(互联网电视业务Over The Top),iptv(交互式网络电视Interactive Personality TV),dvb(数字电视Digital Video Broadcasting),以及基于html5(Hyper Text Markup Language 5,超文本标记语言5)实现的网络应用等。其中,所述BesTV TVOS是基于网页实现的一种操作***,所有的应用本质上都是基于网页实现的。BesTV TVOS本身不实现窗口***,而是通过网页控件实现。BesTV TVOS中的浏览器功能不再以应用的形式出现,而是以***功能出现。所有的应用都遵循html5标准,以能达到跨平台目的,即能在其他遵循html5标准功能的***上运行网络应用。在本申请以下所述的实施例中,均在BesTV TVOS架构上进行。其中,BesTV TVOS架构图如图2所示。在图2中,Webapp部分主要包括Desktop/launcher UI(桌面或桌面应用程序的用户界面),***app(应用程序),电视app等,都要通过网页形式实现,本地页面或者网络页面,以达到跨平台目的;Webframework(网页框架)模块基于html5和js(JavaScript,网络脚本语言)实现机顶盒必要的基本***功能、电视业务、增值业务等功能,此部分分三层,共6个模块:webos api,类似andorid的sdk api(软件开发工具包的编程接口);TV framework具体实现电视业务相关功能等;System framework:各种***管理功能;server/service/manager实现***各种功能,及其ipc(进程间通信机制)机制,包括播放器功能等;w3c html/css/js;标准的插件接口,如npapi(netscape plugin application programming),bho(browser helperobject)等。Web Runtime类似安卓的java runtime基于开源blink/v8实现,不是一个单纯的webkit、v8的功能,需要包括四个模块:runtime manager功能、WebBOM功能、WebkitPorting功能、Webcore/v8功能。其中,runtime manager功能为模块的管理,WebBOM功能实现w3c的BOM(Browser Object Model,浏览器对象模型)功能,Webkit Porting实现webkit功能,包括封装webcore和适配平台功能,Webcore/v8功能遵循GPL规范的html/css/js的解析,布局,渲染引擎。所述Native实现功能支撑,主要包括:音视频解析编解码、图形库、图片解码库、网络库、其他常用必要的功能库及JVM。所述HAL模块:使用android的HAL(HardwareAbstraction Layer,硬件抽象层)层,以兼容android设备,同时减少开发任务。所述Kernelapi:以支撑不同的kenel(操作***内核),其中,kenel采用linux完成kenel级别功能。
图3示出根据本申请一个方面的一个优选实施例中用于实现跨平台通信的设备模块的示意图;其中,该设备模块主要包括Web framework模块的HTML/CSS/JS API子模块;Web Runtime模块的Webcore/v8子模块和Webkit Porting子模块;Web framework模块的server/service/manager子模块;Native模块的网络库子模块。其中涉及到HTML/CSS/JSAPI子模块主要为新增<share>标签,包括其方法,属性及事件接口;Webcore/v8子模块完成对前述新增<share>标签的解析,包括<share>标签各种属性、方法及事件的解析;WebkitPorting子模块实现解析引擎解析新增<share>标签后对跨平台通信功能业务的调用;跨平台通信功能业务具体由server/service/manager子模块的upnp service完成,此运行在独立的进程中,在Bestv TVOS中通过init进程解析init.rc文件启动;upnp service需要的网络协议栈通过在native模块中的网络子模块增加跨平台通信upnp网络协议栈实现,具体通过libupnp实现。upnp网络协议栈通过http,soap,gena,ssdp等协议完成与同样支持upnp网络协议栈的其他局域网设备的通信。调用流程如图3标示的顺序实现,而事件实现过程正好相反。定义装置11包括图3中的HTML/CSS/JS API子模块,解析装置12包括Webcore/v8,建立装置13包括Native模块,通信装置14包括Webkit Porting子模块和server/service/manager子模块。
本领域技术人员应能理解,所述UPNP(Universal Plug and Play,通用即插即用),基于TCP/IP协议实现设备彼此间通讯的网络协议,一般用于局域网中。整个工作过程需要处理六个方面的内容,即设备寻址、发现设备、对设备的描述、设备控制、设备事件、设备表达。UPnP所用到的主要协议有:SSDP(Simple Service Discovery Protocol,简单服务发现协议)、GENA(Generic Event Notification Architecture,通用事件通知结构)、SOAP(Simple Object Access Protocol,简单对象访问协议)、XML(Extensible MarkupLanguage,可扩张标记语言)等。采用IP协议来保证UPnP独立与网络传输的物理介质,SSDP协议完成设备管理,SOAP协议来保证UPnP设备具有互操作能力,XML来对设备和服务进行统一的描述,HTTP协议来进行UPnP设备的信息交互,GENA完成设备的事件管理。采用这些现存的、广泛应用的协议能减少开发UPnP设备的工作量,使UPnP设备更好地融入现有网络。
在本申请的实施例中,实现跨平台通信的功能是基于blink或webkit实现支持<share>标签的,需要说明的是,所有支持blink的平台,基于html5实现的网络应用都可以直接运行本申请利用所述设备的方法,无需编译。本领域技术人员应能理解,本申请的实施例中,针对Bestv TVOS实现的,但是其他包括html5解析功能的平台都可以参照实施例中的方法实现跨平台通信的功能,平台包括但不限于支持blink或Webkit的平台,如Windows(微软视窗操作***)/Chrome(谷歌浏览器),Ubuntu(基于Linux内核的操作***)/Chrome,Android(谷歌移动操作***)/Webview(android的浏览器框架),Android/Chrome,Tizen(三星的网络操作***),Qt(诺基亚嵌入式操作***)等。其他现有的或今后可能出现的解析功能的平台如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述定义装置11用于:定义<share>标签中的各接口的相关函数、属性和事件,其中,所述<share>标签为文档对象模型树中的节点。
在此,<share>标签属于DOM(Document Object Model,文档对象模型)中的一个节点,类似于html5中的<video>、<audio>、<canvas>等标签。优选地,<share>标签相关的函数包括:寻址函数、查询函数、设备列表函数、设备控制函数、设备事件函数和设备表达函数。优选地,所述事件包括:增加设备事件、移除设备事件、超时查询事件、状态判断事件、异常执行设备事件、执行请求事件、发送消息事件、异常消息报告事件、响应事件。优选地,所述属性包括:自动寻址、自动查询、超时设定、自动验证、预设时间间隔和设备应答。
在此,通信装置13用于:基于相应的事件执行对应的相关函数,并在执行对应的相关函数期间利用对应的属性触发相应的通信功能业务。
例如,在页面收到增加设备事件后在其事件监听方法中直接调用设备列表函数即可获取局域网中实时的设备列表。当出现自动查询属性时,则自动查询局域网中其他的通用即插即用(upnp)设备。
在本申请的一个优选实施例中,具体地定义<share>标签中的各接口的相关函数、属性和事件如下,1)相关函数:寻址函数为share.address(),查询函数为share.search(),设备列表函数为share.deviceList(),设备控制函数为share.deviceInfo(uuid),设备事件函数为share.action(uuid,actArg),设备表达函数为share.upnpSendMessageAction(uuid,message)。需要说明的是,在本申请以下所述实施例中,“相关函数”与“方法”替换使用,即定义相关函数为定义接口的方法。2)增加设备事件为upnpadddevice,对应的事件属性为share.onupnpadddevice;移除设备事件为upnpremovdevice,对应的事件属性为share.onupnpremovdevice;超时查询事件为upnpsearchtimeout,对应的事件属性为share.ononupnpsearchtimeout;状态判断事件为upnpactionok,对应的事件属性为share.onupnpactionok;异常执行设备事件为upnpactionerr,对应的事件属性为share.onupnpactionerr;执行请求事件为upnpaction,对应的事件属性为share.onupnpaction;发送消息事件为upnpsendmessageactionok,对应的事件属性为share.onupnpsendmessageactionok;异常消息报告事件为upnpsendmessageactionerr,对应的事件属性为share.onupnpsendmessageactionerr;响应事件为upnpsendmessageaction,对应的事件属性为share.onupnpsendmessageaction。需要说明的,除了上述所述的事件,还支持html5中的标准的全局事件。3)属性:自动寻址为autoaddress、、自动查询autosearch、超时设定为searchtimeout、自动验证为autobroadcast、预设时间间隔为autobroadcasttime、设备应答为deviceaborttime。
其中,share.address()无参数和没有返回值,用于本地webruntime控制本地upnp设备执行upnp协议中的寻址(address)动作,需要异步执行,此函数无需频繁地执行。share.search()无参数,正常返回时返回Refreshing,表示ssdp search消息已经发送出去;异常返回时为CanNotRefresh,表示ssdp search消息无法发送出去。异步执行此函数,用于本地webruntime控制本地upnp设备执行upnp协议中的search动作,具体执行广播ssdpsearch消息。执行的同时,本地本地upnp设备设定了5s的时间(time)界限,即5s内收到的远程设备发出的响应ssdp search消息的的alive消息是有效的。5s到后,本地upnp设备发给本地webruntime upnprefreshtimeout事件。同时5s内,本地upnp设备每查询(search)到一个upnp设备,会发给本地webruntime一个upnpadddevice事件。可以在以上描述的相关事件到达后调用share.deviceList()获取局域网中实时的upnp设备列表。需要说明的是,至少要做一次search动作,才能获取局域网中的实时的设备列表。但不要频繁执行此函数,此函数执行主要用于后面share.deviceList()描述的(a)、(b)两种情况,重复执行要等收到upnprefreshtimeout事件后才执行。share.deviceList()没有参数,正常返回时返回为设备列表,异常返回为空,需要同步执行。用于获取局域网中的upnp设备列表,即局域网内的upnp设备的对应的设备识别号组成的列表,包括本地设备。在search后,需要在upnpaddevice,upnprefreshtimeout事件到来后访问deviceList,否则无法保证获取局域网中的实时的设备列表,即无法及时获取以下两种情况下的设备:(a)在本地upnp设备启动前已经发送过alive广播并且还没有自动发送下一次的alive消息的远程upnp设备;(b)异常退出并且其expire时间还没到的远程upnp设备。出现(b)中问题时,本地设备内部会自动监视各设备的expire是否已经到达,如果到达,会自动删掉此设备。正常情况下,各设备会自动定时发送ssdp alive消息,提示各设备更新其expire来防止此设备对应的expire到达。而在本地设备启动后启动的其他远程设备都会发送alive消息,此时本设备会提示webruntime模块发送给页面upnpaddevice事件,并自动更新webruntime内部保存的相应的设备列表,即在页面收到upnpaddevice事件后在其事件监听方法中直接调用share.deviceList函数即可获取局域网中实时的设备列表,不需要再执行share.search()。另外,对于在本地设备启动后正常退出的远程upnp设备,每次都会发出byebye消息,此时本地设备对应的webruntime能收到upnpaddevice,并自动更新webruntime内部保存的相应的设备列表,即在页面收到upnpremovdevice后在其事件监听方法中直接调用share.deviceList函数即可获取局域网中实时的设备列表,不想再执行share.search()。share.deviceInfo(uuid)的参数为uuid,即设备的uuid,为share.deviceList()获取的设备列表中的设备识别号,正常返回时为设备信息,异常返回为“NoDevice”,用于获取某个设备的设备信息,主要是其xml文件的url地址,需要同步执行该函数。
share.action(uuid,actArg)的参数中的uuid为share.deviceList()获取的设备列表中的设备识别号,url地址为网址,必须以http://开头,正常返回时true,表示ssopaction消息已经发送出去,并且收到对端upnp设备的响应;异常返回时为false,表示ssopaction消息无法发送出去。该函数用于执行upnp协议的soap action,具体让局域网中的某个upnp设备执行actArg指定的action。为异步执行的函数;若执行成功,则表示soapaction消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的浏览器会受到upnploadactionok事件。此成功只判断soapaction的执行状态,不判断对端设备在actArg错误下执行actArg的具体情况。本地页面逻辑应该自己保证actArg能正常执行。执行异常:包括内部错误(如actArg过长)、无uuid指定的upnp设备、对端设备不支持此action动作、无法连接到此设备,同时向页面发送upnploadactionerr事件。(此函数,应该在share.search()后执行,否则无法保证结果。)另外,其他情况:对于在执行share.search()获取share.deviceList()后,并且share.upnpAction执行前,退出的对端upnp设备执行share.upnpAction会因无法连接对端设备而报错,upnp模块会提示webruntime模块向页面发送upnpactionerr。
share.upnpSendMessageAction(uuid,message)的参数中的uuid为share.deviceList()获取的设备列表中的设备识别号,message为发送的消息,不能为空,忽略空格后的字符串。当正常返回时,返回为true,表示ssop action消息已经发送出去,并且收到对端upnp设备的响应;异常返回为false,表示ssop action消息无法发送出去。该函数用于执行upnp协议的soap action,具体发送给局域网中的某个upnp设备访问message对应的信息,需要异步执行。当执行成功:表示sendMessage soap action消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的webruntime会受到upnpsendmessageactionok事件。此成功只判断soap action的执行状态,不对字符串本身的完整性和安全性进行保证(如可能被第三方截取串改)。页面应该使用某种逻辑保证完整性和安全性,如可以在发送前对字符串进行加密以保证安全性,使用md5签名保证完整性。执行异常:包括内部错误(如message过长,超过1k)、无uuid指定的upnp设备、对端设备不支持此action动作、无法连接到此设备,同时向页面发送upnpsendmessageactionerr事件。此函数最好在share.search()后执行,否则无法保证结果。)其他情况:对于在执行share.search()获取share.deviceList()后,并且share.upnpLoadAction执行前,退出的对端upnp设备,执行share.upnpLoadAction会因无法连接对端设备而报错,upnp模块会提示浏览器模块向页面发送upnpsendmessageactionerr。另外,区分发送方:可以在message部分增加uuid内容来区分发送方。
接上述优选实施例,增加设备事件upnpadddevice:本地设备收到局域网中upnp设备发出的ssdp alive广播消息后,会发给webruntime相应的消息,webruntime更新其内部保存的设备列表,并将upnpadddevice事件发给页面。页面逻辑可以给upnpadddevice事件通过share.onupnpadddevice属性注册方法,并在此方法中调用share.deviceList()获取最新的upnp设备列表。需要说明的是:如本地设备启动时机正常位于远程upnp设备的两次ssdp alive消息的间隔内,即远程设备虽然存在于网络内,但是还没有发出ssdp alive消息,此时本地设备中处于所谓的盲期,即如果不执行search动作,share.deviceList就不包括此远程设备。为避免此情况的出现,每次启动webruntime,要自动执行ssdp search动作。所述事件需和upnpremovdevice以及upnprefreshtimeout事件结合使用。
移除设备事件upnpremovdevice用于以下两种情况:(a)本地设备收到局域网中upnp设备正常退出时发出的ssdp byebye广播消息后,会发给webruntime相应的消息,webruntime更新其内部保存的设备列表,并将upnpremovdevice事件发给页面。页面逻辑可以给upnpremovdevice事件通过share.onupnpremovdevice属性注册方法,并在此方法中调用share.deviceList()获取webruntime中保存的最新的设备列表。(b)局域网中upnp设备异常退出时(包括程序死机,电脑死机,网络故障),无法发送ssdp byebye消息,此时按照upnp协议的规定,本地的upnp设备会根据先前获取的各设备的expair字段,来判断设备异常退出。目前的upnp设备中设定的expair字段的时间为100s,100s到后如果没有此设备对应的新alive消息,即认为此设备已经异常退出。此时本地upnp设备会提示webruntime,对应的upnp设备已经退出,webruntime自动更新其内部保存的设备列表,并给页面发送upnpremovdevice事件。页面逻辑可以给upnpremovdevice事件通过share.onupnpremovdevice属性注册方法,并在此方法中调用share.deviceList()获取webruntime中保存的最新的设备列表。
超时查询事件upnpsearchtimeout:执行share.search()发出ssdp search时,由于并不知道局域网中有多少upnp设备,只能是收到一个ssdp alive消息,更新一下本地列表,即给页面发出一个upnpadddevice消息,页面逻辑监听此事件并通过share.deviceList()获取已经注册的upnp设备。该事件的优点是可以及时获取已经注册的消息,缺点是无法知道局域网最终到底有多少upnp设备。所以,upnp规定,设定一个时间,在此时间到期时获取的设备列表为定为局域网中的全部upnp的设备列表。这个时间,可以根据实际的情况预估。目前的代码中规定为5s。具体为:执行share.search()发出ssdp search时,本地upnp设备设定了5s的time界限,即5s内收到的远程设备发出的响应ssdp search消息的的alive消息是有效的。5s到后,本地upnp设备提示本地webruntime,并最终给页面发送upnprefreshtimeout事件。页面逻辑监听此事件,并在此事件监听方法中通过share.deviceList()获取局域网中的设备列表,并且认为此列表为目前为止,此局域网中所有的upnp设备。此外,后续有新的设备时,由于设备会发送ssdp alive消息,此时通过upnpadddevice和upnpremovdevice消息及其监听机制获取实时的设备列表。
状态判断事件upnpactionok:成功执行soap action后,即soap action消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的webruntime会受到upnpactionok事件。此成功只判断soap action的执行状态。不关心对方执行action的具体情况。页面逻辑在执行share.upnpAction时,需自行判断action内容的合法性。
异常执行设备事件upnpactionerr:异常执行soap action,包括内部错误(如action字符串过长)、无uuid指定的upnp设备、对端设备不支持此action动作,无法连接对端设备时,本地upnp设备会提示本地webruntime发送给页面upnpactionerr事件。
执行请求事件upnpaction:upnp设备响应远程设备发来的soap action请求,并执行具体的action,同时发送给页面相应的upnpaction事件。
发送消息事件upnpsendmessageactionok:成功执行soap SendMessage action后,即soap SendMessage action消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的页面会受到upnpsendmessageactionok事件。此成功只判断soap SendMessage action的执行状态。不关心message自身的安全性和完整性业务。页面逻辑在执行share.upnpSendMessageAction时,需自行判断message的安全性和完整性。
异常消息报告事件upnpsendmessageactionerr:异常执行soap SendMessageaction,包括内部错误(如message过长)、无uuid指定的upnp设备、对端设备不支持此action动作,无法连接对端设备时,本地upnp设备会提示本地webruntime发送给页面upnpsendmessageactionerr事件。
响应事件upnpsendmessageaction:upnp设备响应远程设备发来的soapSendMessage action请求,将新的message发给browser,并发送相应的upnpsendmessageaction事件。
优选地,所述通信装置13用于:根据所述超时设定,触发相应的通信功能业务包括查询局域网中其他的通用即插即用设备的超时时间;根据所述自动验证,触发相应的通信功能业务包括自动发送简单服务发现协议消息;根据所述预设时间间隔,触发相应的通信功能业务包括自动发送简单服务发现协议消息,确定所述简单服务发现协议消息存在的时间间隔。
在此,属性searchtimeout用于设置search局域网中其他upnp设备的超时时间,属性autobroadcast用于自动发出ssdp消息,证明此设备存在;属性autobroadcasttime用于自动发出ssdp存在消息的时间间隔。
更优选地,所述通信装置13还用于:根据所述自动寻址,则触发相应的通信功能业务包括本地通用即插即用设备自动寻址。在此,若出现autoaddress这一属性,则本地upnp设备自动寻址。更优选地,所述通信装置13还用于:根据所述自动查询,触发相应的通信功能业务包括自动查询局域网中其他的通用即插即用设备。在此,如果出现autosearch这一属性,则自动search局域网中其他upnp设备。更优选地,所述通信装置13还用于:根据设备应答,其中,设备应答为在所述时间间隔内未收到设备应答,所述触发相应的通信功能业务包括设置自动中止发送消息。在此,属性deviceaborttime用于在所发出ssdp存在消息的时间间隔内未收到设备存在消息,并且设置了autobroadcast证明设备异常退出。
优选地,图4示出根据本申请一个方面的一个优选实施例的解析装置的结构示意图。所述解析装置12包括:第一支持单元121、第二支持单元122和第三支持单元123,其中,所述第一支持单元121用于在浏览器引擎中定义所述<share>标签的接口,并创建对应所述接口的支持信息;第二支持单元122,用于对所述<share>标签的词法和语法进行解析,得到词法和语法的支持信息;第三支持单元123,用于创建对所述构造文档对象模型树中<share>标签节点的支持信息。
在此,完成对前述新增<share>标签的解析,包括<share>标签各种属性及相关函数。需要实现Webkit/Blink对<share>标签相关的接口,包括属性,方法,事件等支持。在本申请一实施例中,在webkit/blink中实现htmlShareElement元素,该元素继承于htmlElement,htmlShareElement实现在定义装置11中规定的关于share标签的各种属性、相关函数和事件。此外需要在EventTypeNames.in增加对<share>的各种事件的支持,在WindowEventHandlers.idl和DOMWindowEventHandlers.h增加对相应事件的***的支持,需要在HTMLElement增加对<share>标签事件属性的支持。此外需要htmltokenizer等html解析器增加对html<share>标签的词法和语法解析的支持;要在htmltreebuilder增加对构造dom<share>节点的支持。由于<share>节点不需要渲染,所以不需要在render树及render layertree,及layout,paint等支持。具体地,htmlShareElement及其各种接口的实现:继承于htmlElement,需要实现定义装置11中定义的各种接口,包括相关函数,属性,事件属性等,具体需要在webkit/blink中定义htmlShareElement.idl文件已具体完成定义装置11中定义的各种接口。htmlShareElement.cpp、htmlShareElement.h、htmlShareElement.idl需要放在webkit/blink的webkit/source/core/html目录下。
更优选地,所述第一支持单元121用于:定义事件名称;定义事件处理器;增加对各事件属性及相应事件***的支持。
继续接上述实施例,htmlShareElement.idl实现如下:定义事件名称,具体在EventTypeNames.in中的增加上述实施例中定义的各种事件。定义事件处理器,具体修改WindowEventHandlers.idl和DOMWindowEventHandlers.h。此外,需要在HTMLElement中增加对<share>标签事件属性的支持。具体需要在HTMLElement::eventNameForAttributeName增加对各种事件属性及其***的支持。<share>标签的词法及语法解析实现:htmltokenizer,即html词法及语法解析器需要增加对html share标签的支持,包括标签本身的识别,标签属性,方法,事件属性等。DOM share节点支持:htmltreebuilder,即DOM树构造器,需要增加对构造dom share节点的支持。
优选地,所述通信装置13包括:发送单元(未示出),用于在所述客户端向浏览器页面上报所述与跨平台通信功能业务对应的事件;接收单元(未示出),用于基于所述跨平台通信网络协议栈从所述浏览器页面接收对应的事件,以完成服务端的跨平台通信功能业务。
在本申请的一优选实施例中,发送单元为Webkit Porting子模块,接收单元为server/service/manager子模块。解析引擎解析<share>标签后,通过Webkit Porting模块进而对调用server/service/manager子模块跨平台通信业务模块相关功能。
Webkit Porting模块与Webcore/v8子模块运行于同一个进程,即Web Runtime所在的进程。而server/service/manager子模块涉及的upnp service运行于另外的进程,所以Webkit Porting子模块主要完成进程间通信的功能。具体主要通过Binder实现跨进程通信(Android发明的一种进程间通信方式,采用BSD开源规范,在Bestv TVOS也使用这种进程间通信方式)。Binder基于远程代理模式实现客户端和服务端的通信。针对<share>的方法和属性,在Webkit Porting主要实现客户端相关的功能,而服务端由server/service/manager跨平台通信业务模块实现。具体实现相关接口如下,具体功能说明对应<share>相应的方法和属性:
√bool BpUpnpShareService.address()
√bool BpUpnpShareService.search()
√map<string,string>BpUpnpShareService.deviceList()
√string BpUpnpShareService.deviceInfo(string uuid)
√bool BpUpnpShareService.action(string uuid,string actArg)
√bool BpUPnpShareService.resubscribe(string uuid string type)
√bool BpUpnpShareService.upnpSendMessageAction(string uuid,stringmessage)
√bool BpUpnpShareService.setautoaddress(bool auto)
√bool BpUpnpShareService.setautosearch(bool auto)
√bool BpUpnpShareService.setautobroadcast(bool auto)
√bool BpUpnpShareService.set autobroadcasttime(uint32time)
√bool BpUpnpShareService.setdeviceaborttime(uint32time)
√bool BpUpnpShareService.setautoaddress(bool auto)
针对<share>的事件,在Webkit Porting端主要实现服务端相关的功能,并通过Webcore/v8子模块最终上报给页面相关的事件,server/service/manager跨平台通信业务模块实现客户端相关功能,即其通过upnp协议栈接受到相应的事件。具体实现相关接口如下,具体功能对应<share>相应的事件:
√BnUpnpShareEvent.upnpadddevice(string uuid)
√BnUpnpShareEvent.upnpremovdevice(string uuid)
√BnUpnpShareEvent.upnpactionok(string uuid,string action)
√BnUpnpShareEvent.upnpactionerr(string uuid,string action,uint32errcode)
√BnUpnpShareEvent.upnpaction(string uuid,string action)
√BnUpnpShareEvent.resubscribeevnt(string uuid,string event)
√BnUpnpShareEvent.upnpsendmessageactionok(string uuid,stringmessage)
√BnUpnpShareEvent.upnpsendmessageactionerr(string uuid,stringmessage,uint32errcode)
√BnUpnpShareEvent.upnpsendmessageaction(string uuid,string message)
在实施例中,server/service/manager子模块实现跨平台通信业务。具体由server/service/manager子模块中的upnp service完成,此模块运行在独立的进程中,在Bestv TVOS中通过init进程解析init.rc文件启动。upnp service两部分功能,包括control point和device功能。control point完成发出address、search、describe以及各种action命令(如sendmessage action);device功能完成对各种命令对应的动作,即响应control point的address、search、describe以及各种action等。针对<share>的方法和属性,在Webkit Porting主要实现客户端相关的功能,而服务端由server/service/manager子模块实现,该模块调用Native模块的upnp协议栈实现最终的功能。需要实现的接口如下,具体功能说明对应<share>相应的方法和属性:
√bool BnUpnpShareService.address()
√bool BnUpnpShareService.search()
√map<string,string>BnUpnpShareService.deviceList()
√string BnUpnpShareService.deviceInfo(string uuid)
√bool BnUpnpShareService.action(string uuid,string actArg)
√bool BnUPnpShareService.resubscribe(string uuid string type)
√bool BnUpnpShareService.upnpSendMessageAction(string uuid,stringmessage)
√bool BnUpnpShareService.setautoaddress(bool auto)
√bool BnUpnpShareService.setautosearch(bool auto)
√bool BnUpnpShareService.setautobroadcast(bool auto)
√bool BnUpnpShareService.set autobroadcasttime(uint32time)
√bool BnUpnpShareService.setdeviceaborttime(uint32time)
√bool BnUpnpShareService.setautoaddress(bool auto)
针对<share>的事件,在Webkit Porting主要实现远程代理服务端相关的功能,而远程代理客户端由server/service/manager子模块实现,该模块被所述upnp协议栈实现回调实现最终的功能。需要实现的接口如下,具体功能说明对应<share>相应的事件:
√BpUpnpShareEvent.upnpadddevice(string uuid)
√BpUpnpShareEvent.upnpremovdevice(string uuid)
√BpUpnpShareEvent.upnpactionok(string uuid,string action)
√BpUpnpShareEvent.upnpactionerr(string uuid,string action,uint32errcode)
√BpUpnpShareEvent.upnpaction(string uuid,string action)
√BpUpnpShareEvent.resubscribeevnt(string uuid,string event)
√BpUpnpShareEvent.upnpsendmessageactionok(string uuid,stringmessage)
√BpUpnpShareEvent.upnpsendmessageactionerr(string uuid,stringmessage,uint32errcode)
√BpUpnpShareEvent.upnpsendmessageaction(string uuid,string message)
在本申请的实施例中,Native模块的网络库子模块:完成跨平台通信网络协议栈实现,具体通过libupnp实现。Upnp协议栈使用了开源的libupnp-1.6.19完成,libupnp遵循GNU/GPL规范。
图5示出根据本申请另一个方面的一种用于实现跨平台通信的方法流程示意图;所述方法包括步骤S11、步骤S12、步骤S13和步骤S14。其中,在步骤S11中,定义<share>标签,所述标签包括两个以上接口;在步骤S12中,对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;在步骤S13中,建立客户端和服务端之间的跨平台通信网络协议栈;在步骤S14中,根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务。
本申请所述的用于实现跨平台通信的方法是基于BesTV TVOS实现的跨平台通信,用于电视业务,包括但不限于ott(互联网电视业务Over The Top),iptv(交互式网络电视Interactive Personality TV),dvb(数字电视Digital Video Broadcasting),以及基于html5(Hyper Text Markup Language 5,超文本标记语言5)实现的网络应用等。其中,所述BesTV TVOS是基于网页实现的一种操作***,所有的应用本质上都是基于网页实现的。BesTV TVOS本身不实现窗口***,而是通过网页控件实现。BesTV TVOS中的浏览器功能不再以应用的形式出现,而是以***功能出现。所有的应用都遵循html5标准,以能达到跨平台目的,即能在其他遵循html5标准功能的***上运行网络应用。在本申请以下所述的实施例中,均在BesTV TVOS架构上进行。其中,BesTV TVOS架构图如图2所示。在图2中,Webapp部分主要包括Desktop/launcher UI(桌面或桌面应用程序的用户界面),***app(应用程序),电视app等,都要通过网页形式实现,本地页面或者网络页面,以达到跨平台目的;Webframework(网页框架)模块基于html5和js(JavaScript,网络脚本语言)实现机顶盒必要的基本***功能、电视业务、增值业务等功能,此部分分三层,共6个模块:webos api,类似andorid的sdk api(软件开发工具包的编程接口);TV framework具体实现电视业务相关功能等;System framework:各种***管理功能;server/service/manager实现***各种功能,及其ipc(进程间通信机制)机制,包括播放器功能等;w3c html/css/js;标准的插件接口,如npapi(netscape plugin application programming),bho(browser helperobject)等。Web Runtime类似安卓的java runtime基于开源blink/v8实现,不是一个单纯的webkit、v8的功能,需要包括四个模块:runtime manager功能、WebBOM功能、WebkitPorting功能、Webcore/v8功能。其中,runtime manager功能为模块的管理,WebBOM功能实现w3c的BOM(Browser Object Model,浏览器对象模型)功能,Webkit Porting实现webkit功能,包括封装webcore和适配平台功能,Webcore/v8功能遵循GPL规范的html/css/js的解析,布局,渲染引擎。所述Native实现功能支撑,主要包括:音视频解析编解码、图形库、图片解码库、网络库、其他常用必要的功能库及JVM。所述HAL模块:使用android的HAL(HardwareAbstraction Layer,硬件抽象层)层,以兼容android设备,同时减少开发任务。所述Kernelapi:以支撑不同的kenel(操作***内核),其中,kenel采用linux完成kenel级别功能。
图3示出根据本申请一个方面的一个优选实施例中用于实现跨平台通信的设备模块的示意图;其中,该设备模块主要包括Web framework模块的HTML/CSS/JS API子模块;Web Runtime模块的Webcore/v8子模块和Webkit Porting子模块;Web framework模块的server/service/manager子模块;Native模块的网络库子模块。其中涉及到HTML/CSS/JSAPI子模块主要为新增<share>标签,包括其方法,属性及事件接口;Webcore/v8子模块完成对前述新增<share>标签的解析,包括<share>标签各种属性、方法及事件的解析;WebkitPorting子模块实现解析引擎解析新增<share>标签后对跨平台通信功能业务的调用;跨平台通信功能业务具体由server/service/manager子模块的upnp service完成,此运行在独立的进程中,在Bestv TVOS中通过init进程解析init.rc文件启动;upnp service需要的网络协议栈通过在native模块中的网络子模块增加跨平台通信upnp网络协议栈实现,具体通过libupnp实现。upnp网络协议栈通过http,soap,gena,ssdp等协议完成与同样支持upnp网络协议栈的其他局域网设备的通信。调用流程如图3标示的顺序实现,而事件实现过程正好相反。在步骤S11中利用HTML/CSS/JS API子模块,在步骤S12中利用Webcore/v8,在步骤S13中利用Native模块,在步骤S14中利用Webkit Porting子模块和server/service/manager子模块。
本领域技术人员应能理解,所述UPNP(Universal Plug and Play,通用即插即用),基于TCP/IP协议实现设备彼此间通讯的网络协议,一般用于局域网中。整个工作过程需要处理六个方面的内容,即设备寻址、发现设备、对设备的描述、设备控制、设备事件、设备表达。UPnP所用到的主要协议有:SSDP(Simple Service Discovery Protocol,简单服务发现协议)、GENA(Generic Event Notification Architecture,通用事件通知结构)、SOAP(Simple Object Access Protocol,简单对象访问协议)、XML(Extensible MarkupLanguage,可扩张标记语言)等。采用IP协议来保证UPnP独立与网络传输的物理介质,SSDP协议完成设备管理,SOAP协议来保证UPnP设备具有互操作能力,XML来对设备和服务进行统一的描述,HTTP协议来进行UPnP设备的信息交互,GENA完成设备的事件管理。采用这些现存的、广泛应用的协议能减少开发UPnP设备的工作量,使UPnP设备更好地融入现有网络。
在本申请的实施例中,实现跨平台通信的功能是基于blink或webkit实现支持<share>标签的,需要说明的是,所有支持blink的平台,基于html5实现的网络应用都可以直接运行本申请利用所述设备的方法,无需编译。本领域技术人员应能理解,本申请的实施例中,针对Bestv TVOS实现的,但是其他包括html5解析功能的平台都可以参照实施例中的方法实现跨平台通信的功能,平台包括但不限于支持blink或Webkit的平台,如Windows(微软视窗操作***)/Chrome(谷歌浏览器),Ubuntu(基于Linux内核的操作***)/Chrome,Android(谷歌移动操作***)/Webview(android的浏览器框架),Android/Chrome,Tizen(三星的网络操作***),Qt(诺基亚嵌入式操作***)等。其他现有的或今后可能出现的解析功能的平台如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,在步骤S11中,定义<share>标签中的各接口的相关函数、属性和事件,其中,所述<share>标签为文档对象模型树中的节点。
在此,<share>标签属于DOM(Document Object Model,文档对象模型)中的一个节点,类似于html5中的<video>、<audio>、<canvas>等标签。优选地,<share>标签相关的函数包括:寻址函数、查询函数、设备列表函数、设备控制函数、设备事件函数和设备表达函数。优选地,所述事件包括:增加设备事件、移除设备事件、超时查询事件、状态判断事件、异常执行设备事件、执行请求事件、发送消息事件、异常消息报告事件、响应事件。优选地,所述属性包括:自动寻址、自动查询、超时设定、自动验证、预设时间间隔和设备应答。
在此,在步骤S13中,基于相应的事件执行对应的相关函数,并在执行对应的相关函数期间利用对应的属性触发相应的通信功能业务。
例如,在页面收到增加设备事件后在其事件监听方法中直接调用设备列表函数即可获取局域网中实时的设备列表。当出现自动查询属性时,则自动查询局域网中其他的通用即插即用(upnp)设备。
在本申请的一个优选实施例中,具体地定义<share>标签中的各接口的相关函数、属性和事件如下,1)相关函数:寻址函数为share.address(),查询函数为share.search(),设备列表函数为share.deviceList(),设备控制函数为share.deviceInfo(uuid),设备事件函数为share.action(uuid,actArg),设备表达函数为share.upnpSendMessageAction(uuid,message)。需要说明的是,在本申请以下所述实施例中,“相关函数”与“方法”替换使用,即定义相关函数为定义接口的方法。2)增加设备事件为upnpadddevice,对应的事件属性为share.onupnpadddevice;移除设备事件为upnpremovdevice,对应的事件属性为share.onupnpremovdevice;超时查询事件为upnpsearchtimeout,对应的事件属性为share.ononupnpsearchtimeout;状态判断事件为upnpactionok,对应的事件属性为share.onupnpactionok;异常执行设备事件为upnpactionerr,对应的事件属性为share.onupnpactionerr;执行请求事件为upnpaction,对应的事件属性为share.onupnpaction;发送消息事件为upnpsendmessageactionok,对应的事件属性为share.onupnpsendmessageactionok;异常消息报告事件为upnpsendmessageactionerr,对应的事件属性为share.onupnpsendmessageactionerr;响应事件为upnpsendmessageaction,对应的事件属性为share.onupnpsendmessageaction。需要说明的,除了上述所述的事件,还支持html5中的标准的全局事件。3)属性:自动寻址为autoaddress、、自动查询autosearch、超时设定为searchtimeout、自动验证为autobroadcast、预设时间间隔为autobroadcasttime、设备应答为deviceaborttime。
其中,share.address()无参数和没有返回值,用于本地webruntime控制本地upnp设备执行upnp协议中的寻址(address)动作,需要异步执行,此函数无需频繁地执行。share.search()无参数,正常返回时返回Refreshing,表示ssdp search消息已经发送出去;异常返回时为CanNotRefresh,表示ssdp search消息无法发送出去。异步执行此函数,用于本地webruntime控制本地upnp设备执行upnp协议中的search动作,具体执行广播ssdpsearch消息。执行的同时,本地本地upnp设备设定了5s的时间(time)界限,即5s内收到的远程设备发出的响应ssdp search消息的的alive消息是有效的。5s到后,本地upnp设备发给本地webruntime upnprefreshtimeout事件。同时5s内,本地upnp设备每查询(search)到一个upnp设备,会发给本地webruntime一个upnpadddevice事件。可以在以上描述的相关事件到达后调用share.deviceList()获取局域网中实时的upnp设备列表。需要说明的是,至少要做一次search动作,才能获取局域网中的实时的设备列表。但不要频繁执行此函数,此函数执行主要用于后面share.deviceList()描述的(a)、(b)两种情况,重复执行要等收到upnprefreshtimeout事件后才执行。share.deviceList()没有参数,正常返回时返回为设备列表,异常返回为空,需要同步执行。用于获取局域网中的upnp设备列表,即局域网内的upnp设备的对应的设备识别号组成的列表,包括本地设备。在search后,需要在upnpaddevice,upnprefreshtimeout事件到来后访问deviceList,否则无法保证获取局域网中的实时的设备列表,即无法及时获取以下两种情况下的设备:(a)在本地upnp设备启动前已经发送过alive广播并且还没有自动发送下一次的alive消息的远程upnp设备;(b)异常退出并且其expire时间还没到的远程upnp设备。出现(b)中问题时,本地设备内部会自动监视各设备的expire是否已经到达,如果到达,会自动删掉此设备。正常情况下,各设备会自动定时发送ssdp alive消息,提示各设备更新其expire来防止此设备对应的expire到达。而在本地设备启动后启动的其他远程设备都会发送alive消息,此时本设备会提示webruntime模块发送给页面upnpaddevice事件,并自动更新webruntime内部保存的相应的设备列表,即在页面收到upnpaddevice事件后在其事件监听方法中直接调用share.deviceList函数即可获取局域网中实时的设备列表,不需要再执行share.search()。另外,对于在本地设备启动后正常退出的远程upnp设备,每次都会发出byebye消息,此时本地设备对应的webruntime能收到upnpaddevice,并自动更新webruntime内部保存的相应的设备列表,即在页面收到upnpremovdevice后在其事件监听方法中直接调用share.deviceList函数即可获取局域网中实时的设备列表,不想再执行share.search()。share.deviceInfo(uuid)的参数为uuid,即设备的uuid,为share.deviceList()获取的设备列表中的设备识别号,正常返回时为设备信息,异常返回为“NoDevice”,用于获取某个设备的设备信息,主要是其xml文件的url地址,需要同步执行该函数。
share.action(uuid,actArg)的参数中的uuid为share.deviceList()获取的设备列表中的设备识别号,url地址为网址,必须以http://开头,正常返回时true,表示ssopaction消息已经发送出去,并且收到对端upnp设备的响应;异常返回时为false,表示ssopaction消息无法发送出去。该函数用于执行upnp协议的soap action,具体让局域网中的某个upnp设备执行actArg指定的action。为异步执行的函数;若执行成功,则表示soapaction消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的浏览器会受到upnploadactionok事件。此成功只判断soapaction的执行状态,不判断对端设备在actArg错误下执行actArg的具体情况。本地页面逻辑应该自己保证actArg能正常执行。执行异常:包括内部错误(如actArg过长)、无uuid指定的upnp设备、对端设备不支持此action动作、无法连接到此设备,同时向页面发送upnploadactionerr事件。(此函数,应该在share.search()后执行,否则无法保证结果。)另外,其他情况:对于在执行share.search()获取share.deviceList()后,并且share.upnpAction执行前,退出的对端upnp设备执行share.upnpAction会因无法连接对端设备而报错,upnp模块会提示webruntime模块向页面发送upnpactionerr。
share.upnpSendMessageAction(uuid,message)的参数中的uuid为share.deviceList()获取的设备列表中的设备识别号,message为发送的消息,不能为空,忽略空格后的字符串。当正常返回时,返回为true,表示ssop action消息已经发送出去,并且收到对端upnp设备的响应;异常返回为false,表示ssop action消息无法发送出去。该函数用于执行upnp协议的soap action,具体发送给局域网中的某个upnp设备访问message对应的信息,需要异步执行。当执行成功:表示sendMessage soap action消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的webruntime会受到upnpsendmessageactionok事件。此成功只判断soap action的执行状态,不对字符串本身的完整性和安全性进行保证(如可能被第三方截取串改)。页面应该使用某种逻辑保证完整性和安全性,如可以在发送前对字符串进行加密以保证安全性,使用md5签名保证完整性。执行异常:包括内部错误(如message过长,超过1k)、无uuid指定的upnp设备、对端设备不支持此action动作、无法连接到此设备,同时向页面发送upnpsendmessageactionerr事件。此函数最好在share.search()后执行,否则无法保证结果。)其他情况:对于在执行share.search()获取share.deviceList()后,并且share.upnpLoadAction执行前,退出的对端upnp设备,执行share.upnpLoadAction会因无法连接对端设备而报错,upnp模块会提示浏览器模块向页面发送upnpsendmessageactionerr。另外,区分发送方:可以在message部分增加uuid内容来区分发送方。
接上述优选实施例,增加设备事件upnpadddevice:本地设备收到局域网中upnp设备发出的ssdp alive广播消息后,会发给webruntime相应的消息,webruntime更新其内部保存的设备列表,并将upnpadddevice事件发给页面。页面逻辑可以给upnpadddevice事件通过share.onupnpadddevice属性注册方法,并在此方法中调用share.deviceList()获取最新的upnp设备列表。需要说明的是:如本地设备启动时机正常位于远程upnp设备的两次ssdp alive消息的间隔内,即远程设备虽然存在于网络内,但是还没有发出ssdp alive消息,此时本地设备中处于所谓的盲期,即如果不执行search动作,share.deviceList就不包括此远程设备。为避免此情况的出现,每次启动webruntime,要自动执行ssdp search动作。所述事件需和upnpremovdevice以及upnprefreshtimeout事件结合使用。
移除设备事件upnpremovdevice用于以下两种情况:(a)本地设备收到局域网中upnp设备正常退出时发出的ssdp byebye广播消息后,会发给webruntime相应的消息,webruntime更新其内部保存的设备列表,并将upnpremovdevice事件发给页面。页面逻辑可以给upnpremovdevice事件通过share.onupnpremovdevice属性注册方法,并在此方法中调用share.deviceList()获取webruntime中保存的最新的设备列表。(b)局域网中upnp设备异常退出时(包括程序死机,电脑死机,网络故障),无法发送ssdp byebye消息,此时按照upnp协议的规定,本地的upnp设备会根据先前获取的各设备的expair字段,来判断设备异常退出。目前的upnp设备中设定的expair字段的时间为100s,100s到后如果没有此设备对应的新alive消息,即认为此设备已经异常退出。此时本地upnp设备会提示webruntime,对应的upnp设备已经退出,webruntime自动更新其内部保存的设备列表,并给页面发送upnpremovdevice事件。页面逻辑可以给upnpremovdevice事件通过share.onupnpremovdevice属性注册方法,并在此方法中调用share.deviceList()获取webruntime中保存的最新的设备列表。
超时查询事件upnpsearchtimeout:执行share.search()发出ssdp search时,由于并不知道局域网中有多少upnp设备,只能是收到一个ssdp alive消息,更新一下本地列表,即给页面发出一个upnpadddevice消息,页面逻辑监听此事件并通过share.deviceList()获取已经注册的upnp设备。该事件的优点是可以及时获取已经注册的消息,缺点是无法知道局域网最终到底有多少upnp设备。所以,upnp规定,设定一个时间,在此时间到期时获取的设备列表为定为局域网中的全部upnp的设备列表。这个时间,可以根据实际的情况预估。目前的代码中规定为5s。具体为:执行share.search()发出ssdp search时,本地upnp设备设定了5s的time界限,即5s内收到的远程设备发出的响应ssdp search消息的的alive消息是有效的。5s到后,本地upnp设备提示本地webruntime,并最终给页面发送upnprefreshtimeout事件。页面逻辑监听此事件,并在此事件监听方法中通过share.deviceList()获取局域网中的设备列表,并且认为此列表为目前为止,此局域网中所有的upnp设备。此外,后续有新的设备时,由于设备会发送ssdp alive消息,此时通过upnpadddevice和upnpremovdevice消息及其监听机制获取实时的设备列表。
状态判断事件upnpactionok:成功执行soap action后,即soap action消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的webruntime会受到upnpactionok事件。此成功只判断soap action的执行状态。不关心对方执行action的具体情况。页面逻辑在执行share.upnpAction时,需自行判断action内容的合法性。
异常执行设备事件upnpactionerr:异常执行soap action,包括内部错误(如action字符串过长)、无uuid指定的upnp设备、对端设备不支持此action动作,无法连接对端设备时,本地upnp设备会提示本地webruntime发送给页面upnpactionerr事件。
执行请求事件upnpaction:upnp设备响应远程设备发来的soap action请求,并执行具体的action,同时发送给页面相应的upnpaction事件。
发送消息事件upnpsendmessageactionok:成功执行soap SendMessage action后,即soap SendMessage action消息已经发送出去,并且已经收到对端upnp设备响应本地设备upnp action动作的消息,此时本地设备对应的页面会受到upnpsendmessageactionok事件。此成功只判断soap SendMessage action的执行状态。不关心message自身的安全性和完整性业务。页面逻辑在执行share.upnpSendMessageAction时,需自行判断message的安全性和完整性。
异常消息报告事件upnpsendmessageactionerr:异常执行soap SendMessageaction,包括内部错误(如message过长)、无uuid指定的upnp设备、对端设备不支持此action动作,无法连接对端设备时,本地upnp设备会提示本地webruntime发送给页面upnpsendmessageactionerr事件。
响应事件upnpsendmessageaction:upnp设备响应远程设备发来的soapSendMessage action请求,将新的message发给browser,并发送相应的upnpsendmessageaction事件。
优选地,在步骤S13中,根据所述超时设定,触发相应的通信功能业务包括查询局域网中其他的通用即插即用设备的超时时间;根据所述自动验证,触发相应的通信功能业务包括自动发送简单服务发现协议消息;根据所述预设时间间隔,触发相应的通信功能业务包括自动发送简单服务发现协议消息,确定所述简单服务发现协议消息存在的时间间隔。
在此,属性searchtimeout用于设置search局域网中其他upnp设备的超时时间,属性autobroadcast用于自动发出ssdp消息,证明此设备存在;属性autobroadcasttime用于自动发出ssdp存在消息的时间间隔。
更优选地,在步骤S13中,根据所述自动寻址,则触发相应的通信功能业务包括本地通用即插即用设备自动寻址。在此,若出现autoaddress这一属性,则本地upnp设备自动寻址。更优选地,在步骤S13中,根据所述自动查询,触发相应的通信功能业务包括自动查询局域网中其他的通用即插即用设备。在此,如果出现autosearch这一属性,则自动search局域网中其他upnp设备。更优选地,步骤S13还包括:根据设备应答,其中,设备应答为在所述时间间隔内未收到设备应答,所述触发相应的通信功能业务包括设置自动中止发送消息。在此,属性deviceaborttime用于在所发出ssdp存在消息的时间间隔内未收到设备存在消息,并且设置了autobroadcast证明设备异常退出。
优选地,图6示出根据本申请另一个方面的一个优选实施例的步骤S12的流程示意图。所述步骤S12包括:步骤S121、步骤S122和步骤S123,其中,在步骤S121中,在浏览器引擎中定义所述<share>标签的接口,并创建对应所述接口的支持信息;在步骤S122中,对所述<share>标签的词法和语法进行解析,得到词法和语法的支持信息;在步骤S123中,创建对所述构造文档对象模型树中<share>标签节点的支持信息。
在此,完成对前述新增<share>标签的解析,包括<share>标签各种属性及相关函数。需要实现Webkit/Blink对<share>标签相关的接口,包括属性,方法,事件等支持。在本申请一实施例中,在webkit/blink中实现htmlShareElement元素,该元素继承于htmlElement,htmlShareElement实现在步骤S11中规定的关于<share>标签的各种属性、相关函数和事件。此外需要在EventTypeNames.in增加对<share>的各种事件的支持,在WindowEventHandlers.idl和DOMWindowEventHandlers.h增加对相应事件的***的支持,需要在HTMLElement增加对<share>标签事件属性的支持。此外需要htmltokenizer等html解析器增加对html<share>标签的词法和语法解析的支持;要在htmltreebuilder增加对构造dom<share>节点的支持。由于<share>节点不需要渲染,所以不需要在render树及render layertree,及layout,paint等支持。具体地,htmlShareElement及其各种接口的实现:继承于htmlElement,需要实现步骤S11中定义的各种接口,包括相关函数,属性,事件属性等,具体需要在webkit/blink中定义htmlShareElement.idl文件已具体完成步骤S11中定义的各种接口。htmlShareElement.cpp、htmlShareElement.h、htmlShareElement.idl需要放在webkit/blink的webkit/source/core/html目录下。
更优选地,步骤S121包括:定义事件名称;定义事件处理器;增加对各事件属性及相应事件***的支持。
继续接上述实施例,htmlShareElement.idl实现如下:定义事件名称,具体在EventTypeNames.in中的增加上述实施例中定义的各种事件。定义事件处理器,具体修改WindowEventHandlers.idl和DOMWindowEventHandlers.h。此外,需要在HTMLElement中增加对<share>标签事件属性的支持。具体需要在HTMLElement::eventNameForAttributeName增加各种事件属性及其***的支持。<share>标签的词法及语法解析实现:htmltokenizer,即html词法及语法解析器需要增加对html share标签的支持,包括标签本身的识别,标签属性,方法,事件属性等。DOM share节点支持:htmltreebuilder,即DOM树构造器,需要增加对构造dom share节点的支持。
优选地,步骤S13包括:在所述客户端向浏览器页面上报所述与跨平台通信功能业务对应的事件;基于所述跨平台通信网络协议栈从所述浏览器页面接收对应的事件,以完成服务端的跨平台通信功能业务。
在本申请的一优选实施例中,解析引擎解析<share>标签后,通过Webkit Porting模块进而对调用server/service/manager子模块跨平台通信业务模块相关功能。
Webkit Porting模块与Webcore/v8子模块运行于同一个进程,即Web Runtime所在的进程。而server/service/manager子模块涉及的upnp service运行于另外的进程,所以Webkit Porting子模块主要完成进程间通信的功能。具体主要通过Binder实现跨进程通信(Android发明的一种进程间通信方式,采用BSD开源规范,在Bestv TVOS也使用这种进程间通信方式)。Binder基于远程代理模式实现客户端和服务端的通信。针对<share>的方法和属性,在Webkit Porting主要实现客户端相关的功能,而服务端由server/service/manager跨平台通信业务模块实现。具体实现相关接口如下,具体功能说明对应<share>相应的方法和属性:
√bool BpUpnpShareService.address()
√bool BpUpnpShareService.search()
√map<string,string>BpUpnpShareService.deviceList()
√string BpUpnpShareService.deviceInfo(string uuid)
√bool BpUpnpShareService.action(string uuid,string actArg)
√bool BpUPnpShareService.resubscribe(string uuid string type)
√bool BpUpnpShareService.upnpSendMessageAction(string uuid,stringmessage)
√bool BpUpnpShareService.setautoaddress(bool auto)
√bool BpUpnpShareService.setautosearch(bool auto)
√bool BpUpnpShareService.setautobroadcast(bool auto)
√bool BpUpnpShareService.set autobroadcasttime(uint32time)
√bool BpUpnpShareService.setdeviceaborttime(uint32time)
√bool BpUpnpShareService.setautoaddress(bool auto)
针对<share>的事件,在Webkit Porting端主要实现服务端相关的功能,并通过Webcore/v8子模块最终上报给页面相关的事件,server/service/manager跨平台通信业务模块实现客户端相关功能,即其通过upnp协议栈接受到相应的事件。具体实现相关接口如下,具体功能对应<share>相应的事件:
√BnUpnpShareEvent.upnpadddevice(string uuid)
√BnUpnpShareEvent.upnpremovdevice(string uuid)
√BnUpnpShareEvent.upnpactionok(string uuid,string action)
√BnUpnpShareEvent.upnpactionerr(string uuid,string action,uint32errcode)
√BnUpnpShareEvent.upnpaction(string uuid,string action)
√BnUpnpShareEvent.resubscribeevnt(string uuid,string event)
√BnUpnpShareEvent.upnpsendmessageactionok(string uuid,stringmessage)
√BnUpnpShareEvent.upnpsendmessageactionerr(string uuid,stringmessage,uint32errcode)
√BnUpnpShareEvent.upnpsendmessageaction(string uuid,string message)
在实施例中,server/service/manager子模块实现跨平台通信业务。具体由server/service/manager子模块中的upnp service完成,此模块运行在独立的进程中,在Bestv TVOS中通过init进程解析init.rc文件启动。upnp service两部分功能,包括control point和device功能。control point完成发出address、search、describe以及各种action命令(如sendmessage action);device功能完成对各种命令对应的动作,即响应control point的address、search、describe以及各种action等。针对<share>的方法和属性,在Webkit Porting主要实现客户端相关的功能,而服务端由server/service/manager子模块实现,该模块调用Native模块的upnp协议栈实现最终的功能。需要实现的接口如下,具体功能说明对应<share>相应的方法和属性:
√bool BnUpnpShareService.address()
√bool BnUpnpShareService.search()
√map<string,string>BnUpnpShareService.deviceList()
√string BnUpnpShareService.deviceInfo(string uuid)
√bool BnUpnpShareService.action(string uuid,string actArg)
√bool BnUPnpShareService.resubscribe(string uuid string type)
√bool BnUpnpShareService.upnpSendMessageAction(string uuid,stringmessage)
√bool BnUpnpShareService.setautoaddress(bool auto)
√bool BnUpnpShareService.setautosearch(bool auto)
√bool BnUpnpShareService.setautobroadcast(bool auto)
√bool BnUpnpShareService.set autobroadcasttime(uint32time)
√bool BnUpnpShareService.setdeviceaborttime(uint32time)
√bool BnUpnpShareService.setautoaddress(bool auto)
针对<share>的事件,在Webkit Porting主要实现远程代理服务端相关的功能,而远程代理客户端由server/service/manager子模块实现,该模块被所述upnp协议栈实现回调实现最终的功能。需要实现的接口如下,具体功能说明对应<share>相应的事件:
√BpUpnpShareEvent.upnpadddevice(string uuid)
√BpUpnpShareEvent.upnpremovdevice(string uuid)
√BpUpnpShareEvent.upnpactionok(string uuid,string action)
√BpUpnpShareEvent.upnpactionerr(string uuid,string action,uint32errcode)
√BpUpnpShareEvent.upnpaction(string uuid,string action)
√BpUpnpShareEvent.resubscribeevnt(string uuid,string event)
√BpUpnpShareEvent.upnpsendmessageactionok(string uuid,stringmessage)
√BpUpnpShareEvent.upnpsendmessageactionerr(string uuid,stringmessage,uint32errcode)
√BpUpnpShareEvent.upnpsendmessageaction(string uuid,string message)
在本申请的实施例中,Native模块的网络库子模块:完成跨平台通信网络协议栈实现,具体通过libupnp实现。Upnp协议栈使用了开源的libupnp-1.6.19完成,libupnp遵循GNU/GPL规范。
根据本申请再一个方面,还提供了一种基于计算的设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
定义<share>标签,所述标签包括两个以上接口;对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;建立客户端和服务端之间的跨平台通信网络协议栈;根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (23)
1.一种用于实现跨平台通信的方法,其中,所述方法包括:
定义<share>标签,所述标签包括两个以上接口;
对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;
建立客户端和服务端之间的跨平台通信网络协议栈;
根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务;其中,所述定义<share>标签,所述标签包括两个以上接口,包括:
定义<share>标签中的各接口的相关函数、属性和事件,其中,所述<share>标签为文档对象模型树中的节点;
其中,将发送单元与接收单元运行于同一进程中,所述进行客户端与服务端之间的跨平台通信功能业务包括:
通过所述发送单元执行以下步骤:在所述客户端向浏览器页面上报与跨平台通信功能业务对应的事件;
通过所述接收单元执行以下步骤:基于所述跨平台通信网络协议栈从所述浏览器页面接收对应的事件,以完成服务端的跨平台通信功能业务。
2.根据权利要求1所述的方法,其中,进行客户端与服务端之间的跨平台通信功能业务,包括:
基于相应的事件执行对应的相关函数,并在执行对应的相关函数期间利用对应的属性触发相应的通信功能业务。
3.根据权利要求1或2所述的方法,其中,所述相关函数包括:
寻址函数、查询函数、设备列表函数、设备控制函数、设备事件函数和设备表达函数。
4.根据权利要求1或2所述的方法,其中,所述事件包括:
增加设备事件、移除设备事件、超时查询事件、状态判断事件、异常执行设备事件、执行请求事件、发送消息事件、异常消息报告事件、响应事件。
5.根据权利要求2所述的方法,其中,所述属性包括:
自动寻址、自动查询、超时设定、自动验证、预设时间间隔和设备应答。
6.根据权利要求5所述的方法,其中,利用对应的属性触发相应的通信功能业务包括:
根据所述超时设定,触发相应的通信功能业务包括查询局域网中其他的通用即插即用设备的超时时间;
根据所述自动验证,触发相应的通信功能业务包括自动发送简单服务发现协议消息;
根据所述预设时间间隔,触发相应的通信功能业务包括自动发送简单服务发现协议消息,确定所述简单服务发现协议消息存在的时间间隔。
7.根据权利要求6所述的方法,其中,利用对应的属性触发相应的通信功能业务,还包括:
根据所述自动寻址,则触发相应的通信功能业务包括本地通用即插即用设备自动寻址。
8.根据权利要求6所述的方法,其中,利用对应的属性触发相应的通信功能业务,还包括:
根据所述自动查询,触发相应的通信功能业务包括自动查询局域网中其他的通用即插即用设备。
9.根据权利要求6所述的方法,其中,利用对应的属性触发相应的通信功能业务,还包括:
根据设备应答,其中,设备应答为在所述时间间隔内未收到设备应答,所述触发相应的通信功能业务包括设置自动中止发送消息。
10.根据权利要求1所述的方法,其中,对所述<share>标签中的各接口进行解析,得到各个接口的支持信息,包括:
在浏览器引擎中定义所述<share>标签的接口,并创建对应所述接口的支持信息;
对所述<share>标签的词法和语法进行解析,得到词法和语法的支持信息;
创建对所述文档对象模型树中<share>标签节点的支持信息。
11.根据权利要求10所述的方法,其中,在浏览器引擎中定义所述<share>标签的接口,并创建对应所述接口的支持信息,包括:
定义事件名称;
定义事件处理器;
增加对各事件属性及相应事件***的支持。
12.一种用于实现跨平台通信的设备,其中,所述设备包括:
定义装置,用于定义<share>标签,所述标签包括两个以上接口;
解析装置,用于对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;
建立装置,用于建立客户端和服务端之间的跨平台通信网络协议栈;
通信装置,用于根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务;
其中,所述定义装置用于:
定义<share>标签中的各接口的相关函数、属性和事件,其中,所述<share>标签为文档对象模型树中的节点;
其中,所述通信装置包括:运行于同一进程中的发送单元和接收单元,
发送单元,用于在所述客户端向浏览器页面上报与跨平台通信功能业务对应的事件;
接收单元,用于基于所述跨平台通信网络协议栈从所述浏览器页面接收对应的事件,以完成服务端的跨平台通信功能业务。
13.根据权利要求12所述的设备,其中,通信装置用于:
基于相应的事件执行对应的相关函数,并在执行对应的相关函数期间利用对应的属性触发相应的通信功能业务。
14.根据权利要求12或13所述的设备,其中,所述相关函数包括:
寻址函数、查询函数、设备列表函数、设备控制函数、设备事件函数和设备表达函数。
15.根据权利要求12或13所述的设备,其中,所述事件包括:
增加设备事件、移除设备事件、超时查询事件、状态判断事件、异常执行设备事件、执行请求事件、发送消息事件、异常消息报告事件、响应事件。
16.根据权利要求13所述的设备,其中,所述属性包括:
自动寻址、自动查询、超时设定、自动验证、预设时间间隔和设备应答。
17.根据权利要求16所述的设备,其中,所述通信装置用于:
根据所述超时设定,触发相应的通信功能业务包括查询局域网中其他的通用即插即用设备的超时时间;
根据所述自动验证,触发相应的通信功能业务包括自动发送简单服务发现协议消息;
根据所述预设时间间隔,触发相应的通信功能业务包括自动发送简单服务发现协议消息,确定所述简单服务发现协议消息存在的时间间隔。
18.根据权利要求17所述的设备,其中,所述通信装置还用于:
根据所述自动寻址,则触发相应的通信功能业务包括本地通用即插即用设备自动寻址。
19.根据权利要求17所述的设备,其中,所述通信装置还用于:
根据所述自动查询,触发相应的通信功能业务包括自动查询局域网中其他的通用即插即用设备。
20.根据权利要求17所述的设备,其中,所述通信装置还用于:
根据设备应答,其中,设备应答为在所述时间间隔内未收到设备应答,所述触发相应的通信功能业务包括设置自动中止发送消息。
21.根据权利要求12所述的设备,其中,所述解析装置包括:
第一支持单元,用于在浏览器引擎中定义所述<share>标签的接口,并创建对应所述接口的支持信息;
第二支持单元,用于对所述<share>标签的词法和语法进行解析,得到词法和语法的支持信息;
第三支持单元,用于创建对所述文档对象模型树中<share>标签节点的支持信息。
22.根据权利要求21所述的设备,其中,所述第一支持单元用于:
定义事件名称;
定义事件处理器;
增加对各事件属性及相应事件***的支持。
23.一种基于计算机的设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
定义<share>标签,所述标签包括两个以上接口;
对所述<share>标签中的各接口进行解析,得到各个接口的支持信息;
建立客户端和服务端之间的跨平台通信网络协议栈;
根据所述跨平台通信网络协议栈、接口及其支持信息,进行客户端与服务端之间的跨平台通信功能业务;
其中,所述定义<share>标签,所述标签包括两个以上接口,包括:
定义<share>标签中的各接口的相关函数、属性和事件,其中,所述<share>标签为文档对象模型树中的节点;
其中,将发送单元与接收单元运行于同一进程中,所述进行客户端与服务端之间的跨平台通信功能业务包括:
通过所述发送单元执行以下步骤:在所述客户端向浏览器页面上报与跨平台通信功能业务对应的事件;
通过所述接收单元执行以下步骤:基于所述跨平台通信网络协议栈从所述浏览器页面接收对应的事件,以完成服务端的跨平台通信功能业务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710241440.XA CN108733495B (zh) | 2017-04-13 | 2017-04-13 | 用于实现跨平台通信的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710241440.XA CN108733495B (zh) | 2017-04-13 | 2017-04-13 | 用于实现跨平台通信的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108733495A CN108733495A (zh) | 2018-11-02 |
CN108733495B true CN108733495B (zh) | 2022-01-28 |
Family
ID=63923706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710241440.XA Active CN108733495B (zh) | 2017-04-13 | 2017-04-13 | 用于实现跨平台通信的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108733495B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413420B (zh) * | 2019-01-23 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、终端及存储介质 |
CN111488142B (zh) * | 2020-04-10 | 2023-04-28 | 中电科航空电子有限公司 | 支持多操作***平台的嵌入式航空通信中间件及其应用 |
WO2022012382A1 (en) * | 2020-07-14 | 2022-01-20 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for enabling interaction between binder application and http application and related products |
CN117201577B (zh) * | 2023-11-07 | 2024-02-13 | 中电长城(长沙)信息技术有限公司 | 基于pisa的跨平台api和spi的通讯方法和*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789935A (zh) * | 2008-12-03 | 2010-07-28 | 英特尔公司 | 向已连接设备推入内容的技术 |
CN101878616A (zh) * | 2007-11-27 | 2010-11-03 | 三星电子株式会社 | 使用通用web应用控制家庭网络装置的方法及其装置 |
CN103297839A (zh) * | 2012-02-24 | 2013-09-11 | 上海融帜信息技术有限公司 | 一种通过浏览器调用来播放电视的方法 |
CN103902293A (zh) * | 2014-03-28 | 2014-07-02 | 上海下一代广播电视网应用实验室有限公司 | 基于android广电网络浏览器中间件***构建方法 |
CN104780181A (zh) * | 2014-01-09 | 2015-07-15 | 青岛海信移动通信技术股份有限公司 | 一种显示网络中设备的方法和一种网络设备 |
-
2017
- 2017-04-13 CN CN201710241440.XA patent/CN108733495B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101878616A (zh) * | 2007-11-27 | 2010-11-03 | 三星电子株式会社 | 使用通用web应用控制家庭网络装置的方法及其装置 |
CN101789935A (zh) * | 2008-12-03 | 2010-07-28 | 英特尔公司 | 向已连接设备推入内容的技术 |
CN103297839A (zh) * | 2012-02-24 | 2013-09-11 | 上海融帜信息技术有限公司 | 一种通过浏览器调用来播放电视的方法 |
CN104780181A (zh) * | 2014-01-09 | 2015-07-15 | 青岛海信移动通信技术股份有限公司 | 一种显示网络中设备的方法和一种网络设备 |
CN103902293A (zh) * | 2014-03-28 | 2014-07-02 | 上海下一代广播电视网应用实验室有限公司 | 基于android广电网络浏览器中间件***构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108733495A (zh) | 2018-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733495B (zh) | 用于实现跨平台通信的方法和设备 | |
CN111314141B (zh) | 路由更新方法及装置 | |
US7487201B1 (en) | Method and system for providing framework for Java based AJAX web applications | |
US7587447B2 (en) | Systems, methods and computer programs for implementing and accessing web services | |
US6289370B1 (en) | Platform independent enhanced help system for an internet enabled embedded system | |
JP7451825B2 (ja) | マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、及びコンピュータープログラム製品 | |
US11842222B2 (en) | Using scripts to bootstrap applications with metadata from a template | |
CN109120684B (zh) | 信息化管理方法、装置、esb总线平台以及存储介质 | |
US20040199818A1 (en) | Automated testing of web services | |
US20070263650A1 (en) | Method for prioritizing web service requests | |
US8239493B2 (en) | Automated server controlled client-side logging | |
US9323587B2 (en) | Method and system for automatic detecting and resolving APIs | |
WO2013097592A1 (zh) | 脚本加载技术 | |
US8326913B2 (en) | Method and system for service contract discovery | |
US20230205503A1 (en) | Method for dynamically integrating application programs, and software system and machine using the same | |
CN104834588A (zh) | 检测常驻式跨站脚本漏洞的方法和装置 | |
CN113179269B (zh) | 基于物联网的协议数据解析方法、***、介质 | |
CN113806008A (zh) | 集群访问方法、装置、电子设备及可读存储介质 | |
WO2021093672A1 (zh) | 外部***的嵌入方法、工作流***、设备及计算机可读存储介质 | |
US20060041665A1 (en) | Network services applications | |
WO2012063282A1 (ja) | マッシュアップ・アプリケーションの動作方法およびシステム | |
US20110295933A1 (en) | Methods, systems, and computer program products for processing a non-returnable command response based on a markup element | |
CN108073627B (zh) | 一种跨域网页的JavaScript函数调用方法以及装置 | |
KR100814396B1 (ko) | 웹 서비스 제공 시스템의 서비스 제공 방법 및 그 장치 | |
CN111666165B (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 |