乐于分享
好东西不私藏

【干货】告别安装包!用 Spring Boot 3 + Web Serial API 打造云端同步的网页版串口助手

【干货】告别安装包!用 Spring Boot 3 + Web Serial API 打造云端同步的网页版串口助手

前言

在嵌入式开发和物联网(IoT)领域,串口助手几乎是人手必备的工具。但你是否遇到过这些尴尬:

  • • 换台电脑就要重新下载安装串口调试软件?
  • • 驱动程序安装繁琐,不同操作系统兼容性差?
  • • 想要远程查看现场设备的调试日志,却发现数据只能留在本地?

今天,我们将利用浏览器原生的 Web Serial API,配合强大的 Spring Boot 3,实现一个无需安装、跨平台、且数据实时同步云端的网页版串口助手。


核心技术:Web Serial API

长期以来,出于安全考虑,浏览器是无法直接访问用户本地硬件的。但随着 Google 推动的 Web Serial 规范落地,现在的 Chrome 和 Edge 已经可以直接与本地串口设备通信。

这意味着: 只要有一个网页,你就能驱动 Arduino、STM32 甚至各种工业传感器。


架构设计:浏览器作为“云端网桥”

由于云服务器无法直接触达你桌子上的 COM 口,我们采用以下架构:

  1. 1. 本地层:串口设备通过 USB 连接到电脑。
  2. 2. 网桥层(浏览器):使用 Web Serial API 读取串口数据,并通过 WebSocket 将数据实时推送到云端。
  3. 3. 云端层(Spring Boot 3):后端接收并存储数据,同时可以反向发送控制指令。

代码实战:核心逻辑实现

1. 前端:一键连接本地硬件

在前端,我们只需几行代码即可唤起系统串口选择框:

// 请求用户授权访问串口const port = await navigator.serial.requestPort();// 配置波特率并打开await port.open({ baudRate115200 });// 持续读取串口流const reader = port.readable.getReader();while (true) {const { value, done } = await reader.read();if (done) break;// 将收到的 Uint8Array 同步到云端 WebSocket    ws.send(value);}

2. 后端:Spring Boot 3 实时中转

后端使用 Spring Boot 3 的 WebSocket 模块,负责数据的汇聚与分发:

@ComponentpublicclassSerialWebSocketHandlerextendsTextWebSocketHandler {@OverrideprotectedvoidhandleTextMessage(WebSocketSession session, TextMessage message) {// 收到来自前端的串口数据Stringdata= message.getPayload();        System.out.println("云端收到设备日志: " + data);// 此处可扩展:存入数据库、分析异常、或转发给远程监控大屏    }}

遇到的坑:为什么部署到云端后“按钮灰了”?

这是很多开发者在尝试 Web Serial 时最容易踩的坑。

安全限制:Web Serial API 强制要求安全上下文

  • • 在本地开发时,访问 http://localhost 是正常的。
  • • 一旦打成 JAR 包部署到云服务器,通过 IP 访问(如 http://1.2.3.4)时,浏览器会因“不安全连接”直接禁用该 API。

解决方案:

  1. 1. 必须上 HTTPS:为你的云端地址配置 SSL 证书。
  2. 2. 临时调试:在 Chrome 浏览器中开启 unsafely-treat-insecure-origin-as-secure 实验性标志,将你的 IP 加入白名单。

总结

网页版串口助手不仅仅是一个工具,它展示了 Web 端正在逐步突破“沙箱”限制,走向更广阔的工业控制和物联网场景。通过 Spring Boot 3 + WebSocket,我们可以轻松实现:

  • • 远程诊断:技术支持人员在公司就能看异地设备的实时日志。
  • • 数据上云:本地调试数据直接进入云端数据库,方便后续 AI 分析。
  • • 零部署:新同事入职,打开网页即可开始调试。

如果你对源码感兴趣,或者在实现过程中遇到了 HTTPS 证书配置问题,欢迎在评论区留言交流!