in src/Microsoft.Azure.SignalR.Emulator/HubEmulator/GroupManager.cs [196:233]
private async Task CleanExpiresCoreAsync()
{
while (true)
{
await Task.Delay(1000);
List<(string user, string group)> list = null;
lock (_expires)
{
if (_expires.Count == 0)
{
return;
}
var now = DateTimeOffset.Now;
foreach (var pair in _expires)
{
if (pair.Value < now)
{
if (list == null)
{
list = new List<(string user, string group)> { pair.Key };
}
else
{
list.Add(pair.Key);
}
}
}
if (list != null)
{
foreach (var item in list)
{
_expires.Remove(item);
_userGroupMap.Remove(item.user, item.group);
}
}
}
}
}