The Heartbeat <0> is useful for monitoring the status of the communication link and to identify when the last of a string of messages was not received.
When either end of a FIX connection has not sent any data for [HeartBtInt <108>] seconds, it will transmit a Heartbeat <0> message. When either end of the connection has not received any data for (HeartBtInt <108> + "some reasonable transmission time") seconds, it will transmit a Test Request <1> message. If there is still no Heartbeat <0> message received after (HeartBtInt <108> + "some reasonable transmission time") seconds then the connection should be considered lost and corrective action be initiated. If HeartBtInt <108> is set to zero then no regular Heartbeat <0> messages will be generated. Note that a Test Request <1> message can still be sent independent of the value of the HeartBtInt <108> which will force a Heartbeat <0> message.
Heartbeats issued as the result of Test Request <1> must contain the TestReqID <112> transmitted in the Test Request <1> message. This is useful to verify that the Heartbeat <0> is the result of the Test Request <1> and not as the result of a regular timeout.
The '^' character is used to represent SOH character.