request->Set("method", "event::Heartbeat");
Dictionary::Ptr params = new Dictionary();
- params->Set("timeout", 30);
+ params->Set("timeout", 120);
request->Set("params", params);
{
Value vtimeout = params->Get("timeout");
- if (!vtimeout.IsEmpty())
+ if (!vtimeout.IsEmpty()) {
origin.FromClient->m_NextHeartbeat = Utility::GetTime() + vtimeout;
+ origin.FromClient->m_HeartbeatTimeout = vtimeout;
+ }
return Empty;
}
ApiClient::ApiClient(const String& identity, bool authenticated, const TlsStream::Ptr& stream, ConnectionRole role)
: m_Identity(identity), m_Authenticated(authenticated), m_Stream(stream), m_Role(role), m_Seen(Utility::GetTime()),
- m_NextHeartbeat(0), m_Context(false)
+ m_NextHeartbeat(0), m_HeartbeatTimeout(0), m_Context(false)
{
boost::call_once(l_ApiClientOnceFlag, &ApiClient::StaticInitialize);
m_Seen = Utility::GetTime();
+ if (m_HeartbeatTimeout != 0)
+ m_NextHeartbeat = Utility::GetTime() + m_HeartbeatTimeout;
+
if (m_Endpoint && message->Contains("ts")) {
double ts = message->Get("ts");