func()

in conn.go [231:253]


func (c *Conn) keepAlive() {
	// set the ping interval to half of the session timeout, according to Zookeeper documentation
	pingTicker := time.NewTicker(c.sessionTimeout / 2)
	defer pingTicker.Stop()

	defer c.Close()
	for {
		select {
		case <-pingTicker.C:
			header := &proto.RequestHeader{
				Xid:  pingXID,
				Type: opPing,
			}

			if err := WriteRecords(c.conn, header); err != nil {
				log.Printf("error writing ping request: %v", err)
				return
			}
		case <-c.sessionCtx.Done():
			return
		}
	}
}