blog icon indicating copy to clipboard operation
blog copied to clipboard

NPAPI 的替代方案:Chrome Apps

Open lmk123 opened this issue 8 years ago • 3 comments

关于 NPAPI 的简介请移步维基百科(英文)。文章中开发的 Chrome App 源码在这里

前段时间,Google Chrome 禁用了 NPAPI 插件,导致我们公司里原本用 Java 写的读取电子秤读数的浏览器插件失效了,而目前谷歌官方推荐的替代方案是 Native Client,当然对于我这个前端来说,C/C++ 的东西一时半会儿搞不定。

然后我注意到,Chrome Apps 能访问到系统的底层硬件服务,比如串行端口USB蓝牙网络连接,而公司的电子秤是使用串行端口连接到电脑的。

于是我开始考虑使用 Chrome Apps 替代 NPAPI 的可行性了。

假设我能正常使用 Chrome Apps 读取到电子秤的读数,那还需要一种方式,能让普通网页获取到 Chrome Apps 里的数据。在开发 Chrome 扩展程序的时候,普通网页能通过外部消息通信达到这个目的,搜寻一番之后,发现 Chrome Apps 也有这个功能。(只是藏的略深,菜单栏里没有显示出来这个网页,必须到 manifest 文件格式里找到 externally_connectable 这个字段点击进去才看得到。)

作为一名前端,能涉及到系统硬件的开发让我觉得兴奋不已,所以我立刻着手开始开发这个 Chrome Apps 了。

我在公司的电脑是笔记本,本身没有串行端口,但公司有一根转接口,能转接到 USB 插口。这种情况下应该使用串行端口 API 还是 USB API?我也不知道,我先试了试使用串行端口 API,然后就成功接收到电子秤发送过来的数据了!

电子秤发送过来的数据经过 Chrome 处理后都是 ArrayBuffer,要自己转换成 String 类型。电子秤会不停的发送数据,每次只发送一至两个字符,将这些字符打印出来后,发现它们是有规律的:电子秤在稳定时会以换行符作为分隔符发送电子秤的读数。稍作处理,就能读取到一整行的、完整的数据了。

再加上一些外部消息调用的处理,普通网页就能读取到电子秤的读数了!这样看来,使用 Chrome Apps 替代 NPAPI 并非不可能。

lmk123 avatar Dec 10 '15 07:12 lmk123

你好,请问chrome应用的安装和维护升级怎么处理?墙的缘故,一般用户都根本无法chrome扩展。 就算安装了,以后升级怎么升级? 在关注这块,方便的话价格wx聊聊

liyatang avatar Feb 06 '17 09:02 liyatang

你好!我怎么就检测不到设备呢,在背景页可以看到,但是打开扩展看不到任何设备

zonectmac avatar Apr 26 '18 05:04 zonectmac

你好,请问chrome应用的安装和维护升级怎么处理?墙的缘故,一般用户都根本无法chrome扩展。 就算安装了,以后升级怎么升级? 在关注这块,方便的话价格wx聊聊

可以出口转内销

g8up avatar Mar 10 '20 15:03 g8up