package watch import ( "fmt" "github.com/samuel/go-zookeeper/zk" "time" ) /* 1.如果即设置了全局监听有设置了部分监听,那么最终是都会触发的,并且全局监听在先执行 2.如果设置了监听子节点,那么事件的触发是先子节点后父节点 */ func main() { conn, _, err := zk.Connect(hosts, time.Second*5) defer conn.Close() if err != nil { fmt.Println(err) return } _, _, ech, err := conn.ExistsW(path1) //调用conn.ExistsW(path) 或GetW(path)为对应节点设置监听,该监听只生效一次 if err != nil { fmt.Println(err) return } go watchCreataNode(ech) create(conn, path1, data1) } func watchCreataNode(ech <-chan zk.Event){ event:=<-ech fmt.Println("*******************") fmt.Println("path:", event.Path) fmt.Println("type:", event.Type.String()) fmt.Println("state:", event.State.String()) fmt.Println("-------------------") }