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
SessionManagersent 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.