package overflow_gateway_websocket import ( "time" "github.com/valyala/fasthttp" ) type ( OnRequestFunc func(c Client, method string, params interface{}) (interface{}, error) OnNotifyFunc func(c Client, method string, params interface{}) error OnErrorFunc func(ctx *fasthttp.RequestCtx, status int, reason error) ) const ( // DefaultWriteTimeout is default value of Write Timeout DefaultWriteTimeout = 0 // DefaultReadTimeout is default value of Read Timeout DefaultReadTimeout = 0 // DefaultPongTimeout is default value of Pong Timeout DefaultPongTimeout = 60 * time.Second // DefaultPingTimeout is default value of Ping Timeout DefaultPingTimeout = 10 * time.Second // DefaultPingPeriod is default value of Ping Period DefaultPingPeriod = (DefaultPongTimeout * 9) / 10 // DefaultMaxMessageSize is default value of Max Message Size DefaultMaxMessageSize = 1024 ) // ClientOptions is configuration of the websocket server type ClientOptions struct { OnRequest OnRequestFunc OnNotify OnNotifyFunc OnDisconnected OnDisconnectedFunc MaxMessageSize int64 WriteTimeout time.Duration ReadTimeout time.Duration PongTimeout time.Duration PingTimeout time.Duration PingPeriod time.Duration BinaryMessage bool } // Validate validates the configuration func (o *ClientOptions) Validate() *ClientOptions { if o.WriteTimeout < 0 { o.WriteTimeout = DefaultWriteTimeout } if o.ReadTimeout < 0 { o.ReadTimeout = DefaultReadTimeout } if o.PongTimeout < 0 { o.PongTimeout = DefaultPongTimeout } if o.PingPeriod <= 0 { o.PingPeriod = DefaultPingPeriod } if o.MaxMessageSize <= 0 { o.MaxMessageSize = DefaultMaxMessageSize } if o.OnRequest == nil { o.OnRequest = func(c Client, method string, params interface{}) (interface{}, error) { return nil, nil } } if o.OnNotify == nil { o.OnNotify = func(c Client, method string, params interface{}) error { return nil } } if o.OnDisconnected == nil { o.OnDisconnected = func(c Client) { } } return o }