package websocket_fasthttp import ( "time" "github.com/valyala/fasthttp" ) type SocketHandlers struct { // MaxMessageSize is the maximum size for a message read from the peer. If a // message exceeds the limit, the connection sends a close frame to the peer // and returns ErrReadLimit to the application. MaxMessageSize int64 // WriteTimeout is the write deadline on the underlying network // connection. After a write has timed out, the websocket state is corrupt and // all future writes will return an error. A zero value for t means writes will // not time out. WriteTimeout time.Duration // ReadTimeout is the read deadline on the underlying network connection. // After a read has timed out, the websocket connection state is corrupt and // all future reads will return an error. A zero value for t means reads will // not time out. ReadTimeout time.Duration PongTimeout time.Duration PingTimeout time.Duration PingPeriod time.Duration } func (sh *SocketHandlers) Handshake(ctx *fasthttp.RequestCtx) (id interface{}, extensionsHeader *fasthttp.ResponseHeader) { return nil, nil } func (sh *SocketHandlers) Handle(soc *Socket, stopChan <-chan struct{}, doneChan chan<- struct{}) { // no op } func (sh *SocketHandlers) GetMaxMessageSize() int64 { return sh.MaxMessageSize } func (sh *SocketHandlers) GetWriteTimeout() time.Duration { return sh.WriteTimeout } func (sh *SocketHandlers) GetReadTimeout() time.Duration { return sh.ReadTimeout } func (sh *SocketHandlers) GetPongTimeout() time.Duration { return sh.PongTimeout } func (sh *SocketHandlers) GetPingTimeout() time.Duration { return sh.PingTimeout } func (sh *SocketHandlers) GetPingPeriod() time.Duration { return sh.PingPeriod } func (sh *SocketHandlers) Validate() { if sh.MaxMessageSize <= 0 { sh.MaxMessageSize = DefaultMaxMessageSize } if sh.WriteTimeout <= 0 { sh.WriteTimeout = DefaultWriteTimeout } if sh.ReadTimeout <= 0 { sh.ReadTimeout = DefaultReadTimeout } if sh.PongTimeout <= 0 { sh.PongTimeout = DefaultPongTimeout } if sh.PingTimeout <= 0 { sh.PingTimeout = DefaultPingTimeout } if sh.PingPeriod <= 0 { sh.PingPeriod = DefaultPingPeriod } }