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
}
}
}