{"repo":"jianghuaqi85-sys/gin-realtime-chat","free":true,"listed":false,"github":"https://github.com/jianghuaqi85-sys/gin-realtime-chat","clone":"git clone https://github.com/jianghuaqi85-sys/gin-realtime-chat.git","description":"基于 Go + Gin 框架的高性能实时聊天服务器，支持 WebSocket 消息推送、多频道聊天、管理面板、Redis Pub/Sub 水平扩展、Cloudflare Tunnel 一键公网穿透，内置单页聊天 UI。","language":"Go","stars":25,"topics":["golang","distributed-systems","gin","grpc","microservices","opentelemetry","realtime-chat","redis","websocket"],"license":null,"category":"networking-infra","readme_excerpt":"GIn -- 高性能 Gin 聊天服务器 项目功能 本项目可以在你自己电脑上部署一个聊天室，根据 Cloudflare Tunnel 所使用的服务器，你可以邀请你的朋友一起在这个聊天室里进行聊天。由于固定域名需要购买，我用的是其免费版，缺点是每次重启服务器都会更改域名，如果你有需求你可以购买一个固定的域名。这项目本身可以有很多的扩展方向比如导入文件图片等，你有兴趣的话可以根据其进一步开发使其完善。 基于 Go + Gin 框架的高性能实时聊天服务器，支持 WebSocket 消息推送、多频道聊天、管理面板、Redis Pub/Sub 水平扩展、Cloudflare Tunnel 一键公网穿透，内置单页聊天 UI。 界面预览 --- 技术栈 层级 技术 --------- --------------------------------- 语言 Go 1.25 HTTP 框架 Gin v1.10 数据库 MySQL 8.x（GORM v1.31） 缓存 / 消息总线 Redis（go-redis v8） WebSocket Gorilla WebSocket v1.5 认证 JWT（golang-jwt v5）+ bcrypt 配置管理 Viper（ .env 文件 + 环境变量） 日志 Logrus（结构化 JSON） 链路追踪 OpenTelemetry（OTLP HTTP / stdout） RPC gRPC v1.80 + Protobuf 压缩 gin-contrib/gzip 限流 Redis 滑动窗口（Lua 脚本） 公网穿透 Cloudflare Tunnel（ cloudflared ） 前端 单页 HTML/CSS/JS（内嵌在 Go 二进制中） --- 功能特性 核心聊天 - 用户注册与登录（bcrypt 密码哈希） - JWT 认证（HS256，可配置过期时间） - 多频道聊天：创建、列出、切换频道 - WebSocket 实时消息推送，支持自动重连 - 消息编辑与删除（用户限自己的消息，管理员可删除任何消息） - 消息历史分页加载（基于时间戳游标） - 用户加入/离开频道的系统消息 - 在线用户列表（实时同步） - 修改密码（需验证旧密码） - 修改用户名（支持中文，实时同步到所有客户端） - 会话持久化（localStorage 自动登录） 管理面板 - 服务器统计面板（在线人数、注册用户、频道数、消息数） - 用户管理：列表、删除、封禁、解封 - 频道管理：列表、删除、清空消息 - 全局广播公告 - 管理员路由权限保护（基于角色的中间件） - 权限管理 ：超级管理员可以设置/撤销其他用户的管理员权限 实时基础设施 - WebSocket Hub 256 分桶架构，降低锁竞争 - 64 分片频道锁，细粒度并发控制 - 消息同步持久化：先写库获取 ID（含 3s 超时保护防卡死），再向频道广播 - Redis Pub/Sub 跨进程消息总线（单连接多路复用 + 本地引用计数），完美解决多频道连接爆满问题，支持高并发多实例水平扩展 - 优雅关闭：断开前通知所有客户端并回收连接资源 - 指数退避重连 + HTTP 轮询降级（客户端侧） - WebSocket 升级请求的 Origin 校验（统一收口，无重复检查） 实时同步 - 频道创建同步 ：用户创建频道后，所有在线用户自动看到新频道 - 频道删除同步 ：管理员删除频道后，所有用户自动更新频道列表 - 消息编辑同步 ：消息编辑后，频道内所有用户实时看到更新 - 消息删除同步 ","default_branch":null,"files":null,"tree":[],"storefront":"/r/jianghuaqi85-sys","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/jianghuaqi85-sys/gin-realtime-chat/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}