add heart check reconnection
diff --git a/src/dubbo_client_default.erl b/src/dubbo_client_default.erl
index 7a4e6a4..962fc28 100644
--- a/src/dubbo_client_default.erl
+++ b/src/dubbo_client_default.erl
@@ -170,16 +170,15 @@
 handle_info({timeout, _TimerRef, {reconnect}}, State) ->
     NewState = reconnect(State#state{reconnection_timer = undefined}),
     {noreply, NewState};
-handle_info({timeout, _TimerRef, {heartbeat_timer}}, State) ->
+handle_info({timeout, _TimerRef, {heartbeat_timer}}, #state{heartbeat = HeartbeatInfo} = State) ->
     {ok, NewState} = case check_heartbeat_state(State) of
-                         {normal} -> {ok, State};
-                         {send_heart} ->
+                         ok -> {ok, State};
+                         send_heart ->
                              send_heartbeat_msg(undefined, true, State);
-                         {reconnect} ->
-                             %% @todo reconnect
-                             {ok, State}
+                         reconnect ->
+                             State2 = reconnect(State),
+                             {ok, State2}
                      end,
-    HeartbeatInfo = update_heartbeat(write, NewState#state.heartbeat),
     start_heartbeat_timer(HeartbeatInfo),
     {noreply, NewState#state{heartbeat = HeartbeatInfo}};
 handle_info(_Info, State) ->
@@ -296,13 +295,13 @@
     #heartbeat{last_read = LastRead, last_write = LastWrite, timeout = Timeout, max_timeout = MaxTimeout} = HeartBeatInfo,
     if
         (Now - LastRead) > Timeout ->
-            {send_heart};
+            send_heart;
         (Now - LastWrite) > Timeout ->
-            {send_heart};
+            send_heart;
         (Now - LastRead) > MaxTimeout ->
-            {reconnect};
+            reconnect;
         true ->
-            {normal}
+            ok
     end.