config.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Package config provides the main configuration
  2. package config
  3. import (
  4. "time"
  5. )
  6. // Defines default config settings
  7. const (
  8. DefaultListenHTTP = ":80"
  9. DefaultCacheDuration = 12 * time.Hour
  10. DefaultKeepaliveInterval = 30 * time.Second
  11. DefaultManagerInterval = time.Minute
  12. )
  13. // Defines all the limits
  14. // - global topic limit: max number of topics overall
  15. // - per visistor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 10 seconds)
  16. // - per visistor subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP
  17. const (
  18. DefaultGlobalTopicLimit = 5000
  19. DefaultVisitorRequestLimitBurst = 60
  20. DefaultVisitorRequestLimitReplenish = 10 * time.Second
  21. DefaultVisitorSubscriptionLimit = 30
  22. )
  23. // Config is the main config struct for the application. Use New to instantiate a default config struct.
  24. type Config struct {
  25. ListenHTTP string
  26. ListenHTTPS string
  27. KeyFile string
  28. CertFile string
  29. FirebaseKeyFile string
  30. CacheFile string
  31. CacheDuration time.Duration
  32. KeepaliveInterval time.Duration
  33. ManagerInterval time.Duration
  34. GlobalTopicLimit int
  35. VisitorRequestLimitBurst int
  36. VisitorRequestLimitReplenish time.Duration
  37. VisitorSubscriptionLimit int
  38. BehindProxy bool
  39. }
  40. // New instantiates a default new config
  41. func New(listenHTTP string) *Config {
  42. return &Config{
  43. ListenHTTP: listenHTTP,
  44. ListenHTTPS: "",
  45. KeyFile: "",
  46. CertFile: "",
  47. FirebaseKeyFile: "",
  48. CacheFile: "",
  49. CacheDuration: DefaultCacheDuration,
  50. KeepaliveInterval: DefaultKeepaliveInterval,
  51. ManagerInterval: DefaultManagerInterval,
  52. GlobalTopicLimit: DefaultGlobalTopicLimit,
  53. VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
  54. VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
  55. VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
  56. BehindProxy: false,
  57. }
  58. }