Watcher 设置是开发中最多见的,需要弄清楚watcher的1些基本特点,对exists、getdata、getchild对节点的不同操作会收到不同的 watcher信息
对父节点的变更和孙节点的变更都不会触发watcher,而对watcher本身节点和子节点的变更会触发watcher,具体参照下表。
操作 | 方法 | 触发watcher | watcher state | watcher type | watcher path |
Create当前节点 | getdata | × | × | × | × |
getchildren | √ | 3 | 4 | √ | |
exists | × | × | × | × | |
set当前节点 | getdata | √ | 3 | 3 | √ |
getchildren | × | × | × | × | |
exists | √ | 3 | 3 | √ | |
delete当前节点 | getdata | √ | 3 | 2 | √ |
getchildren | √ | 3 | 2 | √ | |
exists | √ | 3 | 2 | √ | |
create子节点 | getdata | × | × | × | × |
getchildren | √ | 3 | 4 | √ | |
exists | × | × | × | × | |
set子节点 | getdata | × | × | × | × |
getchildren | × | × | × | × | |
exists | × | × | × | × | |
delete子节点 | getdata | × | × | × | × |
getchildren | √ | 3 | 4 | √ | |
exists | × | × | × | × | |
恢复连接 | getdata | √ | 1 | ⑴ | × |
getchildren | √ | 1 | ⑴ | × | |
exists | √ | 1 | ⑴ | × | |
恢复连接session未超时 | getdata | √ | ⑴12 | ⑴ | × |
getchildren | √ | ⑴12 | ⑴ | × | |
exists | √ | ⑴12 | ⑴ | × | |
恢复连接session超时 | getdata | √ | 3 | ⑴ | × |
getchildren | √ | 3 | ⑴ | × | |
exists | √ | 3 | ⑴ | × |
注:×表示否,√表示是。
更多参见 http://tech.uc.cn/?p=1189,不过该文章中第5节对event和state的说明有误,请仔细辨别。