将 Chrome 浏览器变为 OpenIoTHub IoT 网关,以插件界面显示二维码。
- 自动登录: 自动调用 OpenIoTHub 云端 API 获取 JWT Token 并连接
- 二维码展示: 在插件弹窗中展示网关二维码,使用云亿连/OpenIoTHub App 扫码添加
- 多网关支持: 支持同时管理多个网关会话
- Token 管理: 支持手动输入 Token 登录,支持移除单个网关
- 自动重连: 服务断开后自动重连(约 20 秒一次心跳检测)
- WebSocket 代理: 支持 WebSocket/WebSocket Secure 连接代理
- 子会话: 支持 Yamux 子会话嵌套
- 服务处理: 支持 GetSystemStatus 等服务类型
由于 Chrome 扩展的沙箱环境限制,以下 gateway-go 功能无法在 Chrome 扩展中实现:
| 功能 | 状态 | 原因 |
|---|---|---|
| TCP 代理 | 不支持 | 浏览器无原始 TCP 套接字 |
| STCP (TLS) 代理 | 不支持 | 同上 |
| UDP 代理 | 不支持 | 浏览器无 UDP 套接字 |
| SSH 代理 | 不支持 | 浏览器无原始 TCP |
| 串口代理 | 不支持 | 浏览器无串口访问 |
| P2P/KCP | 不支持 | 浏览器无 UDP |
| mDNS 发现 | 不支持 | 浏览器无组播 |
| Docker 发现 | 不支持 | 浏览器无 Docker API |
| IPv6 P2P | 不支持 | 浏览器限制 |
| TAP/TUN | 不支持 | 浏览器无虚拟网卡 |
| 本地 HTTP/gRPC 服务 | N/A | 使用插件弹窗界面替代 |
npm install
npm run build构建产物在 dist/ 目录。
- 打开 Chrome,访问
chrome://extensions/ - 开启右上角"开发者模式"
- 点击"加载已解压的扩展程序"
- 选择
dist/目录
npm run dev启动 webpack watch 模式,修改代码后自动重新构建。修改后需到 chrome://extensions/ 点击刷新按钮。
配置存储在 chrome.storage.local 中,格式与 gateway-go.yaml 一致:
{
"gatewayuuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"logconfig": { "enablestdout": true, "logfilepath": "" },
"http_service_port": 34323,
"loginwithtokenmap": {
"<RunId>": "<JWT Token>"
}
}popup (UI) <--chrome.runtime.sendMessage--> service-worker (核心逻辑)
|
| WebSocket (TLS)
v
IoTHub Server
|
Yamux 多路复用
|
┌─────────────┼─────────────┐
v v v
Ping/Pong WS Proxy NewService
Chrome 扩展版通过 WebSocket 连接到服务器的 TLS 端口,使用与 gateway-go 完全一致的 Yamux 多路复用协议和 msgio 消息格式。
- gateway-go - Go 版本(完整功能)
- gateway-js - Node.js 版本
- gateway_rs - Rust 版本