首页 > 解决方案 > 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 使用吗?

标签: javascriptgoogle-chromeprogressive-web-appsnuxt.js

解决方案


Chrome 应用程序是通过Chrome 网上应用店分发的专用应用程序。想想浏览器扩展,但更像是应用程序。网站无权访问 Chrome 应用程序可用的特权 API。

另请注意,Chrome 应用程序正在停用除 Chrome 操作系统以外的所有应用程序。


推荐阅读