我有一个使用Web蓝牙的网站,我想脱机使用它作为一个静态的,没有web服务器的本地文件。我一直在https://picam-dashboard.glitch.me/ (基于Adafruit的示例https://adafruit-webbt-playground.glitch.me/)上研究它。除了去掉一些特性并粗略地添加其他特性之外,为了便于移植,我基本上将JS和CSS转储到单个HTML文件中。我知道这里有各种各样可怕的做法,但现在我只是试图证明概念。
当通过故障或本地服务器提供服务时,页面运行得很好,但如果我直接打开文件,device.gatt.connect()返回的承诺永远不会解决。如果我在控制台中运行device.gatt.connect(),它将失败,并显示错误DOM Exception: GATT operation not authorized。
(我正在Windows和Android上用Chrome 92进行测试。)
我知道Web Bluetooth只能在安全的环境下运行,但静态页面仍然允许扫描设备,并且可以正确获取设备地址,所以这似乎不是完全的问题。也就是说,在使用本地web服务器时的成功让我认为这仍然是一个安全上下文问题。
我是不是遗漏了一些明显的东西,或者有没有其他方法来利用静态文件中的web蓝牙(没有本地服务器)?
感谢您的反馈/想法/建议!
发布于 2021-08-06 09:23:04
我已经从https://googlechrome.github.io/samples/web-bluetooth/device-disconnect-async-await.html本地下载了HTML文件,并成功试用了它。我可以看到Web蓝牙浏览器选择器,选择我的蓝牙设备,device.gatt.connect()可以正确解析。
它在桌面和安卓系统上分别适用于file://和content:// URL。
我想知道您的蓝牙设备是否不接受多个连接。确保所有以前的连接都已关闭,然后再试一次。
https://stackoverflow.com/questions/68670894
复制相似问题