diff --git a/Sources/Nats/NatsConnection.swift b/Sources/Nats/NatsConnection.swift index 08820a6..11504cc 100644 --- a/Sources/Nats/NatsConnection.swift +++ b/Sources/Nats/NatsConnection.swift @@ -921,14 +921,14 @@ class ConnectionHandler: ChannelInboundHandler { if let natsErr = error as? NatsErrorProtocol { self.fire(.error(natsErr)) } else { - logger.error("unexpected error: \(error)") + // 降级为 debug 级别,避免频繁输出错误日志 + // uncleanShutdown 是常见的 TLS 关闭情况,不需要作为错误处理 + logger.debug("Channel error (will reconnect if needed): \(error)") } - // Unified handling: use handleDisconnect for all non-closed/non-disconnected states - let currentState = state.withLockedValue { $0 } - if currentState != .closed && currentState != .disconnected { - handleDisconnect() - } + // 注意:不在这里调用 handleDisconnect + // context.close() 会触发 channelInactive,由它负责处理断开逻辑 + // 这样可以避免重复处理和过度重连 } func handleDisconnect() {