github.com/wangkui503/aero@v1.0.0/Listener.go (about)

     1  package aero
     2  
     3  import (
     4  	"net"
     5  	"time"
     6  )
     7  
     8  const keepAlivePeriod = 3 * time.Minute
     9  
    10  // Listener sets TCP keep-alive timeouts on accepted connections.
    11  type Listener struct {
    12  	*net.TCPListener
    13  }
    14  
    15  // Accept accepts incoming connections.
    16  func (listener Listener) Accept() (net.Conn, error) {
    17  	connection, err := listener.AcceptTCP()
    18  
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	connection.SetKeepAlive(true)
    24  	connection.SetKeepAlivePeriod(keepAlivePeriod)
    25  	connection.SetNoDelay(true)
    26  
    27  	return connection, nil
    28  }