可以通过比较CONNECTION_LOSS和SESSION_EXPIRED这两种错误,来理解Connection和Session之间的关系:
官方释义 | 底层本质 | 跟CONNECTION_LOSS的关系 | 跟SESSION_EXPIRED的关系 | 重连 | 连接保持机制 | |
CONNECTION_LOSS | link broken |
TCP短连接超时? 或长连接心跳失败? (待看代码) |
N/A |
如果在SESSION Timeout到期之间重连成功,则无SESSION EXPIRED; 否则,则意味着SESSION_EXPIRED |
ZK客户端自动重连 |
tcp keepalive机制? (待看代码) |
SESSION_EXPIRED | "partitioned"for more than the session timeout | 应该跟底层无关(待看代码) | 很有可能是由CONNECTION_LOSS导致的 | N/A | 客户端自己决定是否重连 | ping心跳 |