viewers.go 584 B

12345678910111213141516171819202122232425262728293031
  1. package metrics
  2. import (
  3. "time"
  4. "github.com/owncast/owncast/core"
  5. )
  6. // How often we poll for updates.
  7. const viewerMetricsPollingInterval = 2 * time.Minute
  8. func startViewerCollectionMetrics() {
  9. collectViewerCount()
  10. for range time.Tick(viewerMetricsPollingInterval) {
  11. collectViewerCount()
  12. }
  13. }
  14. func collectViewerCount() {
  15. if len(Metrics.Viewers) > maxCollectionValues {
  16. Metrics.Viewers = Metrics.Viewers[1:]
  17. }
  18. count := core.GetStatus().ViewerCount
  19. value := timestampedValue{
  20. Value: count,
  21. Time: time.Now(),
  22. }
  23. Metrics.Viewers = append(Metrics.Viewers, value)
  24. }