config.go 2.4 KB

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