Maybe I misunderstand but:

Transport objects represent the whole SockJS transport for the application - this reads to me that a client sending a heartbeat response without a request being sent closes down the whole transport. Maintaining this state probably needs to live in the Session