JavaScript可通过Web Bluetooth API在支持浏览器中直接连接BLE设备,适用于工业传感、医疗监测、教育开发及门禁验证等场景,需HTTPS、用户触发、设备广播指定服务且仅限Chrome/Edge支持。

JavaScript 通过 Web Bluetooth API 可以在支持的浏览器中直接与蓝牙低功耗(BLE)设备交互,无需原生 App 或中间网关。它不是操作传统蓝牙(如音频传输),而是面向 BLE 外设(如传感器、手环、医疗设备等)的读写控制。
典型适用场景
Web Bluetooth 主要用于短距离、低功耗、数据驱动型设备的网页直连,常见落地场景包括:
- 工业/实验室设备调试页:网页端读取温湿度传感器、压力表、PLC 模块的实时数据,或下发校准指令;
- 医疗健康监测:连接血糖仪、血氧仪、电子血压计,将测量结果自动填入网页表单或上传至健康平台;
- 教育与创客项目:用网页控制 micro:bit、Arduino Nano 33 BLE、Raspberry Pi Pico W 等开发板的 LED、电机或采集环境数据;
- 智能门禁与工牌验证:网页扫码后触发蓝牙握手,验证 NFC+BLE 双模工卡身份,完成无感签到或权限开门。
关键使用前提
该 API 有明确的安全约束,不是所有环境都能用:
- 必须运行在 HTTPS 协议下(localhost 除外);
- 仅支持现代桌面 Chrome / Edge(v56+)、Chrome for Android(v78+),Safari 和 Firefox 当前不支持;
- 用户必须主动触发(如点击按钮),不能自动连接;
- 只能访问已广播服务 UUID 的 BLE 设备,且需用户在弹窗中手动选择设备。
基础操作流程示例
一次典型连接包含四步:请求设备 → 连接 → 获取服务 → 读/写特征值。例如读取心率设备:
立即学习“Java免费学习笔记(深入)”;
- 调用
navigator.bluetooth.requestDevice({ filters: [{ services: ['heart_rate'] }] })弹出设备选择框; - 获得设备后用
device.gatt.connect()建立 GATT 连接; - 通过
server.getPrimaryService('heart_rate')获取服务; - 再用
service.getCharacteristic('heart_rate_measurement')订阅通知,实时接收心率数据。
注意事项与限制
实际开发中容易踩坑的地方:
- 设备需正确广播标准 BLE 服务(如 heart_rate、battery_service),自定义 UUID 需显式声明;
- 部分设备要求配对(Pairing),但 Web Bluetooth 不暴露系统配对界面,依赖操作系统底层处理;
- 断连后无法后台重连,需用户再次点击触发;
- 不支持经典蓝牙协议(如 A2DP、HFP),也不能播放音乐或接电话。
不复杂但容易忽略。











