diff --git a/src/dubbo_heartbeat.erl b/src/dubbo_heartbeat.erl
index 97edbd2..e84deed 100644
--- a/src/dubbo_heartbeat.erl
+++ b/src/dubbo_heartbeat.erl
@@ -17,7 +17,7 @@
 generate_request(undefined,NeedResponse)->
     RequestId = dubbo_id_generator:gen_id(),
     generate_request(RequestId,NeedResponse);
-generate_request(RequestId,_NeedResponse)->
-    Req = #dubbo_request{is_event = true,is_twoway = true,mid = RequestId,data = undefined,mversion= <<"2.0.0">>},
+generate_request(RequestId,NeedResponse)->
+    Req = #dubbo_request{is_event = true,is_twoway = NeedResponse,mid = RequestId,data = undefined,mversion= <<"2.0.0">>},
     {ok,Bin} = dubbo_codec:encode_request(Req),
     {ok,Bin}.
\ No newline at end of file
diff --git a/src/dubbo_netty_client.erl b/src/dubbo_netty_client.erl
index e5dc72c..754c8c5 100644
--- a/src/dubbo_netty_client.erl
+++ b/src/dubbo_netty_client.erl
@@ -349,29 +349,28 @@
 
 
 process_data(Data,State)->
-    TmpTime = time_util:timestamp_ms(),
     <<Header:16/binary,RestData/binary>> = Data,
     case dubbo_codec:decode_header(Header) of
         {ok,response,ResponseInfo}->
-            %%心跳包的回应，是否会造成错误
-            dubbo_traffic_control:decr_count(State#state.host_flag),
-            case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
-                undefined->
-                    logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
-                {SourcePid,Ref,_RequestState} ->
-                    {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
-
-                    logger:info("got one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
-                    case Res#dubbo_response.is_event of
-                        false ->
-                            %% todo rpccontent need merge response with request
-                            RpcContent=[],
-                            ResponseData = dubbo_type_transfer:response_to_native(Res),
-                            gen_server:cast(SourcePid,{response_process,Ref,RpcContent,ResponseData});
-                        _->
-                            ok
-                    end
-            end,
+            process_response(ResponseInfo#dubbo_response.is_event,ResponseInfo,RestData,State),
+%%            dubbo_traffic_control:decr_count(State#state.host_flag),
+%%            case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
+%%                undefined->
+%%                    logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
+%%                {SourcePid,Ref,_RequestState} ->
+%%                    {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
+%%
+%%                    logger:info("got one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
+%%                    case Res#dubbo_response.is_event of
+%%                        false ->
+%%                            %% todo rpccontent need merge response with request
+%%                            RpcContent=[],
+%%                            ResponseData = dubbo_type_transfer:response_to_native(Res),
+%%                            gen_server:cast(SourcePid,{response_process,Ref,RpcContent,ResponseData});
+%%                        _->
+%%                            ok
+%%                    end
+%%            end,
             {ok,State};
         {ok,request,RequestInfo}->
             {ok,Req} = dubbo_codec:decode_request(RequestInfo,RestData),
@@ -386,18 +385,26 @@
 
 %% @doc process event
 -spec process_response(IsEvent::boolean(),#dubbo_response{},#state{},term())->ok.
-process_response(false,Response,State,TmpTime)->
+process_response(false,ResponseInfo,RestData,State)->
     dubbo_traffic_control:decr_count(State#state.host_flag),
-    case get_earse_request_info(Response#dubbo_response.mid) of
+    case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
         undefined->
-            logger:error("dubbo response can't find request data,response ~p",[Response]);
-        {SourcePid,Ref,RequestState} ->
-            RpcContent=[],
-            gen_server:cast(SourcePid,{msg_back,Ref,Response,RpcContent,RequestState})
+            logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
+        {SourcePid,Ref,_RequestState} ->
+            {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
+            logger:info("got one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
+            case Res#dubbo_response.is_event of
+                false ->
+                    %% todo rpccontent need merge response with request
+                    RpcContent=[],
+                    ResponseData = dubbo_type_transfer:response_to_native(Res),
+                    gen_server:cast(SourcePid,{response_process,Ref,RpcContent,ResponseData});
+                _->
+                    ok
+            end
     end,
     {ok,State};
-process_response(true,Response,State,TmpTime)->
-
+process_response(true,_ResponseInfo,_RestData,State)->
     {ok,State}.
 
 process_request(true,Request,State)->
