我尝试使用node-zookeeper-client库连接到Zookeeper服务器。
代码似乎工作正常,除了一个我无法检测到的情况:服务器不可用时我启动了客户端。在这种情况下,客户端只是挂起,没有超时(似乎没有事件发生)。我怎样才能发现这种情况?
var zookeeper = require("node-zookeeper-client");
console.log("connecting to zookeeper");
zk = new zookeeper.createClient("localhost:2181", {
sessionTimeout: 10,
spinDelay : 10,
retries : 0
});
zk.on("connected", function () {
console.log("connected");
});
zk.on("connectedReadOnly", function () {
console.log("connected read-only");
});
zk.on("expired", function () {
console.log("zk session expired");
});
zk.on("disconnected", function (){
console.log("disconnected from zk");
});
zk.on('state', function (state) {
console.log("state : %s", state);
});
zk.connect();
我知道我可以使用这样的东西来检测情况,但感觉就像是黑客。
setTimeout(function () {
/* am I still in the DISCONNECTED state? */
console.log("client state: %s", zk.getState());
}, 5000);