config.go 2.7 KB

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