[feature] implement reconnect