RabbitMQ 和登入驗證碼更新說明
🔄 RabbitMQ 優化更新
1. 連線管理優化
- ✅ 智慧重連機制:只在連線確實斷開時才重連,避免頻繁重連
- ✅ 連線健康檢查:即時監控連線狀態,自動檢測連線健康度
- ✅ 心跳監控:新增心跳時間記錄,超過 10 秒無心跳視為連線不健康
- ✅ 並發安全:使用互斥鎖確保重連過程的執行緒安全
2. 錯誤處理改進
- ✅ 精確錯誤識別:只對包含 "connection" 或 "channel" 的錯誤進行重連
- ✅ 重試機制:連線失敗後自動重試一次
- ✅ 詳細日誌:新增推送編號,方便追蹤訊息推送狀態
3. 效能優化
- ✅ 跳過 Redis 操作:新增設定選項,可跳過 Redis 操作以提高效能
- ✅ 佇列宣告優化:使用更安全的佇列宣告方式
- ✅ 訊息持久化:確保伺服器重啟後訊息不丟失
🔐 登入驗證碼流程更新
1. 新增自動驗證碼處理 API
AutoLoginVerifyCodeApi - 自動處理驗證碼
POST /api/login/verify/auto
功能特點:
- ✅ 自動取得 ticket:使用者無需提供 ticket,系統自動從 Redis 取得
- ✅ 自動補全 data62:若 data62 為空,自動依據裝置資訊生成
- ✅ 多重 ticket 取得:優先從 Redis 取得,失敗後從狀態快取取得
- ✅ 智慧參數驗證:自動檢查必要參數,提供友善錯誤提示
LoginVerifyCodeApi - 手動驗證碼處理
POST /api/login/verify/manual
功能特點:
- ✅ 手動 ticket 支援:支援使用者手動提供 ticket
- ✅ 自動 ticket 補全:若未提供 ticket,自動從多個來源取得
- ✅ 多重資料來源:從 Redis、狀態快取、使用者資訊、連線管理器等多個來源取得 ticket
- ✅ 完整參數驗證:確保所有必要參數都已提供
2. 驗證碼處理流程
步驟 1:掃碼登入
# 取得登入二維碼
POST /api/login/qr/new
{
"proxy": "http://proxy:port", // 可選:代理設定
"deviceName": "iPhone", // 可選:裝置名稱
"deviceId": "device_id" // 可選:裝置 ID
}
步驟 2:檢查登入狀態
# 檢查掃碼狀態
GET /api/login/status?key=your-uuid
返回狀態說明:
code: 200 - 掃碼成功,等待確認
code: -3 - 需要驗證碼,返回 ticket
code: 300 - 二維碼不存在或已過期
步驟 3:提交驗證碼(自動模式)
# 自動處理驗證碼(推薦)
POST /api/login/verify/auto?key=your-uuid
{
"uuid": "your-uuid",
"code": "123456" // 驗證碼
}
步驟 4:提交驗證碼(手動模式)
# 手動處理驗證碼
POST /api/login/verify/manual?key=your-uuid
{
"uuid": "your-uuid",
"code": "123456", // 驗證碼
"ticket": "ticket", // 可選:手動提供 ticket
"data62": "data62" // 可選:手動提供 data62
}
3. Ticket 取得策略
優先順序:
- Redis 快取:
db.GetTicketForKey(uuid)
- 狀態快取:
db.GetCheckStatusCache(uuid).Ticket
- 使用者資訊:
userInfo.Ticket
- 連線管理器:從活躍連線中取得 ticket
自動補全策略:
- data62 自動生成:依據裝置 IMEI 自動生成 data62
- ticket 自動取得:從多個資料來源自動取得 ticket
- 參數驗證:確保所有必要參數都已提供
RabbitMQ 和登入驗證碼更新說明
🔄 RabbitMQ 優化更新
1. 連線管理優化
2. 錯誤處理改進
3. 效能優化
🔐 登入驗證碼流程更新
1. 新增自動驗證碼處理 API
AutoLoginVerifyCodeApi- 自動處理驗證碼功能特點:
LoginVerifyCodeApi- 手動驗證碼處理功能特點:
2. 驗證碼處理流程
步驟 1:掃碼登入
步驟 2:檢查登入狀態
返回狀態說明:
code: 200- 掃碼成功,等待確認code: -3- 需要驗證碼,返回 ticketcode: 300- 二維碼不存在或已過期步驟 3:提交驗證碼(自動模式)
步驟 4:提交驗證碼(手動模式)
3. Ticket 取得策略
優先順序:
db.GetTicketForKey(uuid)db.GetCheckStatusCache(uuid).TicketuserInfo.Ticket自動補全策略: