package socket import ( "time" "git.loafle.net/commons/server-go" ) type ReadWriteHandler interface { server.ReadWriteHandler GetPongTimeout() time.Duration GetPingTimeout() time.Duration GetPingPeriod() time.Duration IsEnableCompression() bool } type ReadWriteHandlers struct { server.ReadWriteHandlers PongTimeout time.Duration `json:"pongTimeout"` PingTimeout time.Duration `json:"pingTimeout"` PingPeriod time.Duration `json:"pingPeriod"` EnableCompression bool `json:"enableCompression"` } func (rwh *ReadWriteHandlers) GetPongTimeout() time.Duration { return rwh.PongTimeout } func (rwh *ReadWriteHandlers) GetPingTimeout() time.Duration { return rwh.PingTimeout } func (rwh *ReadWriteHandlers) GetPingPeriod() time.Duration { return rwh.PingPeriod } func (rwh *ReadWriteHandlers) IsEnableCompression() bool { return rwh.EnableCompression } func (rwh *ReadWriteHandlers) Clone() *ReadWriteHandlers { return &ReadWriteHandlers{ ReadWriteHandlers: *rwh.ReadWriteHandlers.Clone(), PongTimeout: rwh.PongTimeout, PingTimeout: rwh.PingTimeout, PingPeriod: rwh.PingPeriod, EnableCompression: rwh.EnableCompression, } } func (rwh *ReadWriteHandlers) Validate() error { if err := rwh.ReadWriteHandlers.Validate(); nil != err { return err } if rwh.PongTimeout <= 0 { rwh.PongTimeout = server.DefaultPongTimeout } if rwh.PingTimeout <= 0 { rwh.PingTimeout = server.DefaultPingTimeout } if rwh.PingPeriod <= 0 { rwh.PingPeriod = (rwh.PingTimeout * 9) / 10 } return nil }