javascript - PWA 中的“chrome.sockets.tcp”?
问题描述
我正在使用 Nuxt 创建 PWA,并且我想使用 Chrome TCP API 直接与 TCP 设备通信。此处详细介绍了 API https://developer.chrome.com/apps/sockets_tcp
我已经确认客户在访问该页面时正在下载它。
清单.json
{
"name":"pwa-demo",
"short_name":"pwa-demo",
"description":"Test App",
"publicPath":"//_nuxt/",
"icons":[
{
"src":"/_nuxt/icons/icon_64.fj_mLYH_Zr_.png",
"sizes":"64x64",
"type":"image/png"
}
],
"start_url":"/?standalone=true",
"display":"standalone",
"background_color":"#ffffff",
"theme_color":false,
"lang":"en",
"sockets":{
"tcp":{
"connect":[
"*:8023"
]
}
}
}
但是,在所有情况下,当 PWA 在浏览器中或安装后(在桌面和 Android 上)运行时,在尝试调用 chrome.sockets.tcp API 时都会出现以下错误:TypeError: Cannot read property 'tcp' of undefined
Chrome“应用程序”API(https://developer.chrome.com/apps)似乎暗示它应该使用 Cordova 来完成,但我认为这个建议是旧的(2014 年页面上还有其他内容)并且一旦安装了 PWA,安装的 Cordova 应用程序和新安装的 PWA 之间就不应该存在功能差异。它们都是 Chrome WebView 的包装器(当然 Cordova 可以公开更多本机 API)。
我猜测 chrome.sockets.tcp API 实际上是通过 Cordova 包装器而不是 Chrome 本身公开的,但我还没有找到任何可以证实这一点的东西。谷歌公开表示,他们希望 PWA 取代 Chrome 应用程序,因此人们希望 API 被移入 Chrome 本身。似乎有很多人对它是否也可以被 Chrome 扩展程序使用感到困惑。
我的清单错了吗?或者有人可以确认这个 API 不能被 PWA 使用吗?
解决方案
Chrome 应用程序是通过Chrome 网上应用店分发的专用应用程序。想想浏览器扩展,但更像是应用程序。网站无权访问 Chrome 应用程序可用的特权 API。
另请注意,Chrome 应用程序正在停用除 Chrome 操作系统以外的所有应用程序。
推荐阅读
- php - 按 WooCommerce 中浏览次数最多的方式对所有产品进行排序和显示
- c# - 如何将非 www 域重定向到 Azure 上托管的 asp.net mvc 中的 WWW 域?
- java - Eclipse、Maven:-source 8 不支持模块(使用 -source 9 或更高版本来启用模块)
- html - 为什么我的按钮被点击后消失了
- python - Python 请求请求与预期不同的 instagram 链接
- r - 如果行中的第一个值符合特定条件,有没有办法过滤掉行。R
- java - 使用继承和多态来实例化 Thread 子类的对象的主要区别是什么?
- python - 按 nan 值过滤 numpy 数组的 pandas 数据框列
- delphi - 具有 TStrings 属性的组件在字符串列表编辑器中禁用了“代码编辑器”
- amazon-web-services - 如何在部署期间使用非 AWS 资源扩展 AWS CDK