config.go 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package server
  2. import (
  3. "time"
  4. )
  5. // Defines default config settings
  6. const (
  7. DefaultListenHTTP = ":80"
  8. DefaultCacheDuration = 12 * time.Hour
  9. DefaultKeepaliveInterval = 30 * time.Second
  10. DefaultManagerInterval = time.Minute
  11. DefaultAtSenderInterval = 10 * time.Second
  12. DefaultMinDelay = 10 * time.Second
  13. DefaultMaxDelay = 3 * 24 * time.Hour
  14. DefaultMessageLimit = 512
  15. DefaultFirebaseKeepaliveInterval = time.Hour
  16. )
  17. // Defines all the limits
  18. // - global topic limit: max number of topics overall
  19. // - per visitor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 10 seconds)
  20. // - per visitor 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. FirebaseKeepaliveInterval time.Duration
  40. MessageLimit int
  41. MinDelay time.Duration
  42. MaxDelay time.Duration
  43. GlobalTopicLimit int
  44. VisitorRequestLimitBurst int
  45. VisitorRequestLimitReplenish time.Duration
  46. VisitorSubscriptionLimit int
  47. BehindProxy bool
  48. }
  49. // NewConfig instantiates a default new server config
  50. func NewConfig() *Config {
  51. return &Config{
  52. ListenHTTP: DefaultListenHTTP,
  53. ListenHTTPS: "",
  54. KeyFile: "",
  55. CertFile: "",
  56. FirebaseKeyFile: "",
  57. CacheFile: "",
  58. CacheDuration: DefaultCacheDuration,
  59. KeepaliveInterval: DefaultKeepaliveInterval,
  60. ManagerInterval: DefaultManagerInterval,
  61. MessageLimit: DefaultMessageLimit,
  62. MinDelay: DefaultMinDelay,
  63. MaxDelay: DefaultMaxDelay,
  64. AtSenderInterval: DefaultAtSenderInterval,
  65. FirebaseKeepaliveInterval: DefaultFirebaseKeepaliveInterval,
  66. GlobalTopicLimit: DefaultGlobalTopicLimit,
  67. VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
  68. VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
  69. VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
  70. BehindProxy: false,
  71. }
  72. }