关于pgHtml5Bridge的使用说明
什么是pgHtml5Bridge?
pgHtml5Bridge是利用Html5中的WebSocket等技术将C++的Peergine中间件的API和一些特性桥接到web中,并将Peergine中间件的API翻译成JavaScript的版本。
P2P中间件桥接程序是一个Web服务器和Peergine中间件集成的一个服务程序,目的是可以在浏览器端开发和运行P2P视频应用。简化开发流程,降低开发难度。尽可能的兼容更多的流览器。
通过对世面上常见的几款浏览器的分析,发现浏览器为了安全,将不再提供原生插件的用法,ActiveX也只支持IE,Chrome,火狐更是早就已经不再支持运行原生应用了。
所以我们开发P2P中间件桥接程序,web利用Http和WebSocket 访问P2P中间件桥接程序,P2P中间件桥接程序启动Peergine P2P实例,并利用webSocket返回回调信息。
这样简单的信息通信就可以做到了,其中还有就是视频的传输和播放问题,为了兼容更多的浏览器,我们让浏览器通过刷新图片的方式播放视频,P2P中间件桥接程序
注意:API调用是需要注意的点,API调用是其实是一个阻塞的过程,在中间件桥接程序不忙的时候可以很快返回,几乎感受不到卡顿,近似没有阻塞。但是一旦中间件桥接程序很忙,导致不能及时响应请求,就可能造成页面卡死崩溃。
注意:视频刷新是使用轮询的方式,和API请求是走的同一条通道,存在相互影响的可能,如果后台程序突然不能访问,无法响应请求,就会导致web页面卡死或者崩溃。
Peergine中间件的回调是通过WebSocket返回。Js执行阻塞有可能导致接收WebSocket的js代码不能执行。
关于浏览器最小化到后台说明
浏览器挂到后台后,经过测试发现Chrome的js不再执行,IE也有一些问题导致页面无法正常工作。P2P中间件桥接程序可能会因为无法与页面通信而销毁页面关联的Peergine实例。导致之后的操作出现异常,必须重新启动。
pgHtml5Bridge的结构。
- PGHtml5Bridge有两部分组成:
一部分是Web的前端,这部分主要包含pgHtml5Bridge.js,以及一些其他Web页面。
另一部分是由Peergine中间件,HTTP服务器和WebSocket服务器组成的后端。
- 发布程序安装后的目录结构:
├─bin
│ └─res
├─DemoWeb
├─Doc
其中bin目录中包含服务程序和一些运行依赖的动态库。
DemoWeb目录中是前端的Demo代码。
Doc目录下是一些说明文档。
启动方式及区别。
运行安装MSI后自动安装成服务并自启动。
API的改动说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
WndCreate /* 功能:创建视频显示窗口,替代utilGetWndRect 参数:divId:web中布局标签的ID, sizeX视频的长 sizeY视频的宽 返回值:Wnd 的oml格式的字符串 阻塞方式:非阻塞 */ this.WndCreate = function(divId, sizeX, sizeY); WndDestroy /* 功能:销毁视频显示窗口 参数:divId:web中布局标签的ID 返回值:无 阻塞方式:非阻塞 */ this.WndDestroy = function(divId); pgNewJSNode /* 功能:创建pgLibJSNode(和IPGCPPNode,pgJNINode类似) 参数:sSession 回话ID,要求使用数字,使用同一个后端的WEB中不要有两个相同sSession的Node。 返回值:pgLibJSNode 阻塞方式:是 */ function pgNewJSNode(sSession); pgDeleteJSNode /* 功能:删除pgLibJSNode 参数:无 返回值:无 阻塞方式:是 */ function pgDeleteJSNode(sSession) |
- 升级日志。
序号 |
修改说明 |
版本 |
1 |
V0.2 | |