go-zookeeper Connect returns 没有有效连接

go-zookeeper Connect returns without a valid connection

我有一个关于 zookeeper 的问题,我正在尝试使用 go-zookeeper 实现简单的服务发现,我正在使用 go-zookeeper:https://github.com/samuel/go-zookeeper

我的问题是每当我连接到 zookeeper 时使用例如:

zoo_keeper, _, err := zk.Connect(s, time.Second)

立即returns函数,没有报错,但还没有真正有效的连接。现在,例如,如果我想创建 znode,我需要检查什么以确保在这样做之前我有一个有效的连接?

在尝试了几件事之后,感谢 Imesha 的建议,我可以使用频道实现我想要的。下面是我的示例代码。

func zk_connect(zk_server string) (*zk.Conn, error) {
    zoo_keeper, session, err := zk.Connect([]string{zk_server}, time.Second)
    if err != nil {
        return nil, err
    }
    for event := range session {
        if event.State == zk.StateConnected {
            log.Printf("zookeeper State: %s\n", event.State)
            break
        }
    }
    return zoo_keeper, nil
}