logo
0
0
WeChat Login

Dynamic QR Share

一个实时二维码共享应用,支持两个客户端通过 WebSocket 进行实时通信。

快速开始

开发模式

# 使用脚本启动 ./deploy.sh dev # 或直接运行 go run ./cmd/server/main.go

访问应用: http://localhost:8080/a/

生产部署

方式 1: Docker Compose(推荐)

./deploy.sh docker-up

方式 2: 二进制构建

./deploy.sh build ./deploy.sh run

方式 3: Docker 镜像

./deploy.sh docker-build docker run -p 8080:8080 dynamic-qr-share:latest

项目结构

├── cmd/server/ # 服务器入口 ├── internal/ # 核心逻辑 │ ├── channel/ # 频道管理 │ ├── http/ # HTTP 处理器 │ ├── protocol/ # 消息协议 │ └── ws/ # WebSocket 客户端 ├── web/ # 前端资源 │ ├── a/ # Client A (接收端) │ ├── b/ # Client B (发送端) │ └── shared/ # 共享样式 ├── Dockerfile # Docker 构建文件 ├── docker-compose.yml # Docker Compose 配置 └── deploy.sh # 快速部署脚本

系统要求

  • Go: 1.23.12+
  • Docker (可选,用于容器部署)
  • 现代浏览器 (Client A/B)

部署指南

详细的部署说明请参考 DEPLOYMENT.md,包括:

  • ✅ 本地开发环境配置
  • ✅ 生产构建流程
  • ✅ Docker 部署
  • ✅ 云平台部署 (Heroku, Google Cloud Run, AWS)
  • ✅ 系统监控与维护
  • ✅ 故障排查指南
  • ✅ 安全最佳实践

常用命令

# 开发 ./deploy.sh dev # 构建 ./deploy.sh build # 运行 ./deploy.sh run # Docker Compose ./deploy.sh docker-up ./deploy.sh docker-down # 健康检查 ./deploy.sh health # 帮助 ./deploy.sh help

核心功能

Client A - 接收端

  • 生成动态二维码,邀请 Client B 扫码加入
  • 接收并显示 Client B 扫描的二维码内容
  • 支持连接状态管理

Client B - 发送端

  • 扫描二维码加入频道
  • 实时捕获摄像头二维码
  • 将扫码结果发送给 Client A

API 端点

端点方法说明
/healthGET健康检查
/api/channelsPOST创建频道
/api/channelGET获取频道状态
/api/qrGET生成二维码图片
/wsWebSocketWebSocket 连接

依赖

  • github.com/google/uuid - UUID 生成
  • github.com/gorilla/websocket - WebSocket 支持
  • github.com/skip2/go-qrcode - 二维码生成

环境变量

变量默认值说明
PORT8080服务监听端口
SOCKET_PATH``Unix Domain Socket 路径(设置后优先使用 UDS)

许可证

MIT


需要帮助? 查看完整的 部署指南

About

基于go的二维码同步工具

Language
Go42.3%
Shell23.6%
JavaScript17.2%
HTML8.1%
Others8.8%