如何在静态的本地HTML文件中使用Web蓝牙?



我有一个网站,使用Web蓝牙,我想使用离线作为一个静态的,没有Web服务器的本地文件。我一直在https://picam-dashboard.glitch.me/(基于Adafruit的例子https://adafruit-webbt-playground.glitch.me/)上工作。除了去掉一些特性并粗略地添加其他特性之外,为了可移植性,我基本上把JS和CSS放到了一个HTML文件中。我知道这里有各种各样可怕的做法,但现在我只是在尝试证明概念。

当通过Glitch或本地服务器服务时,该页运行良好,但如果我直接打开文件,则device.gatt.connect()返回的承诺永远不会解决。如果我在控制台中运行device.gatt.connect(),它会失败并显示错误DOM Exception: GATT operation not authorized.

(我正在测试Chrome 92在Windows和Android。)

我知道Web蓝牙只会在一个安全的上下文中运行,但是静态页面仍然允许扫描设备,并且可以正确地获得设备地址,所以这似乎不是完全的问题。话虽如此,使用本地web服务器的成功让我认为这仍然是一个安全上下文问题。

我错过了一些明显的东西,或者有另一种方法利用web蓝牙从静态文件(没有本地服务器)?

感谢任何反馈/想法/建议!

我已经从https://googlechrome.github.io/samples/web-bluetooth/device-disconnect-async-await.html本地下载了HTML文件,并成功地进行了尝试。我可以看到Web蓝牙浏览器选择器,选择我的蓝牙设备,并且device.gatt.connect()解析正确。

它分别适用于桌面和Android上的file://content://url。

我想知道你的蓝牙设备是否不接受多个连接。请确保之前的所有连接都已关闭,然后再试一次。

最新更新