Fix #6 again, all clients timed out because of wrong invokeId.
Implement a better heartbeat with timeout verification