config.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. DefaultAtSenderInterval = 10 * time.Second
  13. DefaultMinDelay = 10 * time.Second
  14. DefaultMaxDelay = 3 * 24 * time.Hour
  15. DefaultMessageLimit = 512
  16. DefaultFirebaseKeepaliveInterval = time.Hour
  17. )
  18. // Defines all the limits
  19. // - global topic limit: max number of topics overall
  20. // - per visitor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 10 seconds)
  21. // - per visitor subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP
  22. const (
  23. DefaultGlobalTopicLimit = 5000
  24. DefaultVisitorRequestLimitBurst = 60
  25. DefaultVisitorRequestLimitReplenish = 10 * time.Second
  26. DefaultVisitorSubscriptionLimit = 30
  27. )
  28. // Config is the main config struct for the application. Use New to instantiate a default config struct.
  29. type Config struct {
  30. ListenHTTP string
  31. ListenHTTPS string
  32. KeyFile string
  33. CertFile string
  34. FirebaseKeyFile string
  35. CacheFile string
  36. CacheDuration time.Duration
  37. KeepaliveInterval time.Duration
  38. ManagerInterval time.Duration
  39. AtSenderInterval time.Duration
  40. FirebaseKeepaliveInterval time.Duration
  41. MessageLimit int
  42. MinDelay time.Duration
  43. MaxDelay time.Duration
  44. GlobalTopicLimit int
  45. VisitorRequestLimitBurst int
  46. VisitorRequestLimitReplenish time.Duration
  47. VisitorSubscriptionLimit int
  48. BehindProxy bool
  49. }
  50. // New instantiates a default new config
  51. func New(listenHTTP string) *Config {
  52. return &Config{
  53. ListenHTTP: listenHTTP,
  54. ListenHTTPS: "",
  55. KeyFile: "",
  56. CertFile: "",
  57. FirebaseKeyFile: "",
  58. CacheFile: "",
  59. CacheDuration: DefaultCacheDuration,
  60. KeepaliveInterval: DefaultKeepaliveInterval,
  61. ManagerInterval: DefaultManagerInterval,
  62. MessageLimit: DefaultMessageLimit,
  63. MinDelay: DefaultMinDelay,
  64. MaxDelay: DefaultMaxDelay,
  65. AtSenderInterval: DefaultAtSenderInterval,
  66. FirebaseKeepaliveInterval: DefaultFirebaseKeepaliveInterval,
  67. GlobalTopicLimit: DefaultGlobalTopicLimit,
  68. VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
  69. VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
  70. VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
  71. BehindProxy: false,
  72. }
  73. }