watcher 設定是開發中最常見的,需要搞清楚watcher的一些基本特征,對于exists、getdata、getchild對于節點的不同操作會收到不同的 watcher資訊
state=-112 會話逾時狀态
state= -113 認證失敗狀态
state= 1 連接配接建立中
state= 2 (暫時不清楚如何了解這個狀态,zoo_associating_state)
state=3 連接配接已建立狀态
state= 999 無連接配接狀态
type=1 建立節點事件
type=2 删除節點事件
type=3 更改節點事件
type=4 子節點清單變化事件
type= -1 會話session事件
type=-2 監控被移除事件
對父節點的變更以及孫節點的變更都不會觸發watcher,而對watcher本身節點以及子節點的變更會觸發watcher,具體參照下表。
操作
方法
觸發watcher
watcher state
watcher type
watcher path
create目前節點
getdata
×
getchildren
√
3
4
exists
set目前節點
delete目前節點
2
create子節點
set子節點
delete子節點
恢複連接配接
1
-1
恢複連接配接session未逾時
-112
恢複連接配接session逾時
注:×表示否,√表示是。
更多參見 http://tech.uc.cn/?p=1189,不過該文章中第五節對event和state的說明有誤,請仔細辨識。