in src/Microsoft.Azure.SignalR.Common/ServiceConnections/ServiceConnectionContainerBase.cs [188:221]
public virtual Task HandlePingAsync(PingMessage pingMessage)
{
if (RuntimeServicePingMessage.TryGetClientCount(pingMessage, out var clientCount))
{
Endpoint.EndpointMetrics.ClientConnectionCount = clientCount;
}
if (RuntimeServicePingMessage.TryGetServerCount(pingMessage, out var serverCount))
{
Endpoint.EndpointMetrics.ServerConnectionCount = serverCount;
}
if (RuntimeServicePingMessage.TryGetConnectionCapacity(pingMessage, out var connectionCapacity))
{
Endpoint.EndpointMetrics.ConnectionCapacity = connectionCapacity;
}
if (RuntimeServicePingMessage.TryGetStatus(pingMessage, out var status))
{
Log.ReceivedServiceStatusPing(Logger, status, Endpoint);
_hasClients = status;
Endpoint.IsActive = GetServiceStatus(status, CheckWindow, CheckTimeSpan);
}
else if (RuntimeServicePingMessage.TryGetServersTag(pingMessage, out var serversTag, out var updatedTime))
{
Log.ReceivedServersTagPing(Logger, Endpoint);
if (updatedTime > _serversTagContext.Item2)
{
_serversTagContext = Tuple.Create(serversTag, updatedTime);
}
}
else if (RuntimeServicePingMessage.TryGetMessageLogEnableFlag(pingMessage, out var enableMessageLog))
{
_serviceDiagnosticLogsContext.EnableMessageLog = enableMessageLog;
}
return Task.CompletedTask;
}