Heartbeat or die

Alice (buy side) and Bob (sell side) agreed on HeartBtInt=30 at Logon. Every 30 seconds, each side must send a Heartbeat (35=0) or respond to a TestRequest (35=1).

Incident of the day — Bob went silent for 90 seconds. Alice's SessionManager sent TestRequest, then Logout. Bob's NOS never left the building.

Why it exists

TCP does not tell you the peer crashed. Heartbeats prove the session is alive without sending business traffic.

Minimum fields

8=FIX.4.4|9=…|35=0|49=ALICE|56=BOB|34=12|52=20260629-10:00:00|10=…|

Tag 112 (TestReqID) appears on TestRequest and the matching Heartbeat reply.

4H angle

SessionManager owns the timer pipeline — your application code should not hand-craft heartbeats unless you are extending the stack.