Sending the heartbeat response without a request will do nothing. Basicly mechanism which is implemented here work like this:

there was response from previous heartbeat? 
    YES - send a new heartbeat
    NO   - suspend session (session is idle, but not closed), send new heartbeat

heartbeat response received from client
   set that it was received
   set session active if session was suspended

So the heartbeat response will never close the whole transport

I was trying to do the mechanism which is added to new faye on client side - you have event `transport:down` and `transport:up`
Which are telling that for a moment there is no connection, but websocket session wasn't closed (for example when you lost internet connection for a moment).