package middleware import ( "game-driver/internal/schema" "game-driver/leaf" "game-driver/pkg/utils" "go.uber.org/zap" "sync" ) // PlayBgm 播放背景音乐 func PlayBgm() leaf.HandlerFunc { return func(c *leaf.Context) { pm := leaf.Value[*schema.PlayModal](c, PayloadJSONKey) bgm, err := utils.LinkAudio(pm.BGM) if err != nil { zap.S().Errorln("背景音乐数据解析异常:", err) } if bgm != nil { zap.S().Infoln("背景音乐解析成功") // 等待组 var wait sync.WaitGroup defer wait.Wait() // 结束信号通道 a := make(chan struct{}) // 发送结束信号 defer close(a) //wait.Add(1) //go func() { // defer wait.Done() // // zap.S().Infoln("开始播放背景音乐") // defer zap.S().Infoln("结束背景音乐播放") // // ctrl, closer, e := audio.PlayBgmMP3(bgm) // defer closer() // if e != nil { // zap.S().Errorln("播放背景音乐异常:", e) // return // } // // select { // case <-a: // { // speaker.Lock() // ctrl.Streamer = nil // speaker.Unlock() // return // } // } //}() } else { zap.S().Errorln("背景音乐解析为空") } c.Next() } }