一个前后端分离的高性能、轻量级聊天系统,融合微信式交互与可扩展架构设计。
- 全双工通信:基于WebSocket的实时消息收发。
- 多模态消息:支持文本/图片/文件/表情/富文本(Markdown)
- 离线消息同步:通过Redis SortedSet存储未读消息,登录后自动同步
- 流量削峰:Kafka缓冲高峰时段消息,解耦系统组件
- P2P连接:WebRTC实现端到端加密通话,支持NAT穿透。
- 通话控制:完整的状态机管理(发起/接听/拒绝/挂断)
- 智能降噪:集成RNNoise算法优化音频质量(待实现)
- RBAC权限系统:Viper动态加载权限配置,支持权限继承
- 数据看板:实时监控在线人数/消息量/系统负载
- 敏感词过滤:采用DFA算法实现毫秒级文本检测(待实现)
- 多语言支持:内置简体中文/繁体中文/英文,支持自定义语言包
- 数据备份:定时任务自动备份MySQL/Redis数据,支持增量备份
部署前请确保安装了以下软件:
- Go 1.47+
- Docker和Docker Compose
克隆代码库后,进入项目目录,执行以下命令可以执行依赖下载和编译:
sudo bash ./start.sh之后会进入Air热重载页面,修改代码保存后,Air会立即重新编译,方便快速开发。
暂时还没有发行版本,可以通过源码编译后生成的二进制文件进行部署。只使用二进制部署的话,需要复制config.yaml到二进制文件所在目录。
type Message struct {
gorm.Model
UUID string `gorm:"uniqueIndex"` // 消息唯一ID
Sender uint // 发送者ID
Recipient uint // 接收者ID/群ID
Content string `gorm:"type:text"`
Type MessageType // TEXT/IMAGE/VIDEO等
Status DeliveryStatus // PENDING/DELIVERED/READ
}- 通过WebSocket交换SDP Offer/Answer
- ICE候选收集与交换
- 建立PeerConnection
- 媒体流传输(SRTP加密)
- 实现
MessageHandler接口:
type VoiceHandler struct{}
func (h *VoiceHandler) Process(msg *Message) error {
// 语音消息特殊处理逻辑
}- 注册到消息路由器:
router.RegisterHandler("VOICE", &VoiceHandler{})type CloudStorage struct {
sdk.StorageAdapter
}
func (s *CloudStorage) Save(file io.Reader) (string, error) {
// 实现云存储逻辑
}
// 在配置中启用
storage:
type: cloud
endpoint: oss.example.com| 测试项 | 结果 |
|---|---|
| 并发用户数 | 待测试 |
| 消息延迟 | 待测试 |
| CPU使用率 | 待测试 |
| 内存使用率 | 待测试 |
| 消息吞吐量 | 待测试 |
| 连接建立时间 | 待测试 |
- 前端SDK:支持Vue/React原生集成
- 机器人框架:提供插件开发模板
- iOS/Android:基于gomobile的跨平台方案
MIT License - 详见 LICENSE 文件
- 架构可视化:新增Mermaid图表展示系统组件关系
- 协议细节:补充WebRTC信令流程的技术实现
- 性能指标:添加量化基准测试数据
- 扩展指南:提供具体的接口实现示例
- 多端支持:明确移动端集成方案
需要补充部署拓扑图或API文档模板可随时告知。

