summaryrefslogtreecommitdiff
path: root/plugins/websockets/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/websockets/config.go')
-rw-r--r--plugins/websockets/config.go65
1 files changed, 28 insertions, 37 deletions
diff --git a/plugins/websockets/config.go b/plugins/websockets/config.go
index f3cb8e12..be4aaa82 100644
--- a/plugins/websockets/config.go
+++ b/plugins/websockets/config.go
@@ -1,22 +1,16 @@
package websockets
-import "time"
+import (
+ "time"
+
+ "github.com/spiral/roadrunner/v2/pkg/pool"
+)
/*
websockets:
# pubsubs should implement PubSub interface to be collected via endure.Collects
- # also, they should implement RPC methods to publish data into them
- # pubsubs might use general config section or its own
pubsubs:["redis", "amqp", "memory"]
-
- # sample of the own config section for the redis pubsub driver
- redis:
- address:
- - localhost:1111
- .... the rest
-
-
# path used as websockets path
path: "/ws"
*/
@@ -26,33 +20,10 @@ type Config struct {
// http path for the websocket
Path string `mapstructure:"path"`
// ["redis", "amqp", "memory"]
- PubSubs []string `mapstructure:"pubsubs"`
- Middleware []string `mapstructure:"middleware"`
- Redis *RedisConfig `mapstructure:"redis"`
-}
+ PubSubs []string `mapstructure:"pubsubs"`
+ Middleware []string `mapstructure:"middleware"`
-type RedisConfig struct {
- Addrs []string `mapstructure:"addrs"`
- DB int `mapstructure:"db"`
- Username string `mapstructure:"username"`
- Password string `mapstructure:"password"`
- MasterName string `mapstructure:"master_name"`
- SentinelPassword string `mapstructure:"sentinel_password"`
- RouteByLatency bool `mapstructure:"route_by_latency"`
- RouteRandomly bool `mapstructure:"route_randomly"`
- MaxRetries int `mapstructure:"max_retries"`
- DialTimeout time.Duration `mapstructure:"dial_timeout"`
- MinRetryBackoff time.Duration `mapstructure:"min_retry_backoff"`
- MaxRetryBackoff time.Duration `mapstructure:"max_retry_backoff"`
- PoolSize int `mapstructure:"pool_size"`
- MinIdleConns int `mapstructure:"min_idle_conns"`
- MaxConnAge time.Duration `mapstructure:"max_conn_age"`
- ReadTimeout time.Duration `mapstructure:"read_timeout"`
- WriteTimeout time.Duration `mapstructure:"write_timeout"`
- PoolTimeout time.Duration `mapstructure:"pool_timeout"`
- IdleTimeout time.Duration `mapstructure:"idle_timeout"`
- IdleCheckFreq time.Duration `mapstructure:"idle_check_freq"`
- ReadOnly bool `mapstructure:"read_only"`
+ Pool *pool.Config `mapstructure:"pool"`
}
// InitDefault initialize default values for the ws config
@@ -64,4 +35,24 @@ func (c *Config) InitDefault() {
// memory used by default
c.PubSubs = append(c.PubSubs, "memory")
}
+
+ if c.Pool == nil {
+ c.Pool = &pool.Config{}
+ if c.Pool.NumWorkers == 0 {
+ // 2 workers by default
+ c.Pool.NumWorkers = 2
+ }
+
+ if c.Pool.AllocateTimeout == 0 {
+ c.Pool.AllocateTimeout = time.Minute
+ }
+
+ if c.Pool.DestroyTimeout == 0 {
+ c.Pool.DestroyTimeout = time.Minute
+ }
+ if c.Pool.Supervisor == nil {
+ return
+ }
+ c.Pool.Supervisor.InitDefaults()
+ }
}