data_from_hub.go 868 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package redis
  2. import (
  3. "fmt"
  4. "github.com/go-redis/redis/v8"
  5. "github.com/vmihailenco/msgpack"
  6. "sportfitness/base/assembly/heartRate/model"
  7. "time"
  8. )
  9. const hubBandDataChannel = "bsw:sport_fitness:hub_tcp_server:heart_rate"
  10. func GetHubBandData() (data []model.BandData, err error) {
  11. var resultTemp []string
  12. bt := time.Now()
  13. for i := 0; i < 500; i++ {
  14. if time.Now().Sub(bt) > time.Second*5 {
  15. return
  16. }
  17. resultTemp, err = getClient().BLPop(ctx, time.Second, hubBandDataChannel).Result()
  18. if err != nil {
  19. if err == redis.Nil {
  20. err = nil
  21. continue
  22. }
  23. return
  24. }
  25. if len(resultTemp) != 2 {
  26. err = fmt.Errorf("GetHubBandData: 接收长度错误 %d", len(resultTemp))
  27. return
  28. }
  29. one := model.BandData{}
  30. err = msgpack.Unmarshal([]byte(resultTemp[1]), &one)
  31. if err != nil {
  32. return
  33. }
  34. data = append(data, one)
  35. }
  36. return
  37. }