Best practices for single connection, multiple client, and auto reconnection?

Do you mean every http endpoint created by different Dgraph Servers? by offset. Or separate each operation (mutation, query, drop_all, commit, alter and so on) per client? I think the answer is yes to all.

The client will certainly connect when the instance is ready.

I do not think so, but it will subtly connect when there is an DB instance ready. For each request the Client will return an error. If you make a new request, it will make a new connection as soon as it is available.