feat: 添加查成绩功能
This commit is contained in:
@@ -12,7 +12,6 @@ const wsURL = "wss://scoresaber.com/ws"
|
||||
|
||||
var ScoresManager = scoresManager{}
|
||||
|
||||
// scoresManager 管理最近的 5 条数据
|
||||
type scoresManager struct {
|
||||
recentScores []Command
|
||||
mu sync.Mutex
|
||||
@@ -34,7 +33,7 @@ func (sm *scoresManager) connect() error {
|
||||
return err
|
||||
}
|
||||
sm.retryTimes = 0
|
||||
sm.recentScores = make([]Command, 0, 50)
|
||||
sm.recentScores = make([]Command, 0)
|
||||
go sm.receiveData()
|
||||
return nil
|
||||
}
|
||||
@@ -49,12 +48,17 @@ func (sm *scoresManager) receiveData() {
|
||||
for {
|
||||
var cmd Command
|
||||
err := sm.conn.ReadJSON(&cmd)
|
||||
if cmd.CommandData.Score.LeaderboardPlayerInfo.Country != "CN" {
|
||||
log.Printf("非国内玩家数据:%v", cmd)
|
||||
if err != nil {
|
||||
log.Print("读取数据失败:", err)
|
||||
time.Sleep(time.Second)
|
||||
sm.retryTimes++
|
||||
if sm.retryTimes > 3 {
|
||||
return
|
||||
}
|
||||
continue
|
||||
}
|
||||
if err != nil {
|
||||
log.Printf("读取数据失败:", err)
|
||||
SSQuery.SaveRecord(cmd.CommandData)
|
||||
if cmd.CommandData.Score.LeaderboardPlayerInfo.Country != "CN" {
|
||||
continue
|
||||
}
|
||||
sm.mu.Lock()
|
||||
@@ -67,11 +71,11 @@ func (sm *scoresManager) receiveData() {
|
||||
}
|
||||
|
||||
func (sm *scoresManager) GetRecentScores(count int) []Command {
|
||||
sm.mu.Lock()
|
||||
defer sm.mu.Unlock()
|
||||
if count > len(sm.recentScores) {
|
||||
count = len(sm.recentScores)
|
||||
}
|
||||
sm.mu.Lock()
|
||||
defer sm.mu.Unlock()
|
||||
scoresCopy := make([]Command, count)
|
||||
copy(scoresCopy, sm.recentScores[len(sm.recentScores)-count:])
|
||||
return scoresCopy
|
||||
|
||||
Reference in New Issue
Block a user