The Heartbeat<0> is useful for monitoring the status of the communication link and to identifies 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 HeartBtInt<108> 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 HeartBtInt(108) 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 HeartBtInt(108) 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.