一個基於 Go 和 WebSocket 的即時聊天系統,採用模組化架構設計。
cmd/server/
: 主程序入口點internal/chat/
: 聊天室核心邏輯internal/websocket/
: WebSocket 連接管理internal/api/
: HTTP API 處理internal/config/
: 配置管理pkg/utils/
: 通用工具函數web/
: 前端資源
- 即時聊天
- 用戶加入/離開通知
- 聊天記錄保存
- 系統統計資訊
- 支援多用戶同時在線
- Go 1.24.5 或更高版本
go mod tidy
# 開發模式
air -d
# 簡易執行模式
go run cmd/server/main.go
服務將在 :8080
端口啟動。
PORT
: 服務端口 (預設: 8080)MAX_MESSAGES
: 最大保存訊息數量 (預設: 100)
GET /ws?username=<username>
: WebSocket 連接
GET /api/messages
: 獲取聊天記錄GET /api/stats
: 獲取系統統計
訪問 http://localhost:8080
即可使用聊天界面。
- 關注點分離: 每個模組只負責特定功能
- 易於測試: 可以獨立測試每個組件
- 易於擴展: 新增功能時不會影響現有代碼
- 代碼重用: 聊天室邏輯可以在其他項目中重用
- 團隊協作: 不同開發者可以專注於不同模組
- 在相應的模組中添加新邏輯
- 更新 API 處理器(如需要)
- 添加測試
- 更新文檔
go test ./...
docker build -t go-chat-system .
docker run -p 8080:8080 go-chat-system
- 設置適當的 CORS 策略
- 配置日誌記錄
- 添加監控和健康檢查
- 考慮使用 Redis 等外部存儲來持久化聊天記錄