add keepalive for reconnect