public async Task DelayRemoveTargetAsync(HubConnectionContext connection, RouteTarget target) { if (_options.EnableStickySession && connection.TryGetUid(out var uid)) { await _cache.SetStringAsync(uid, target.ToString(), ExpireIn30Min); } }
public bool TryGetTarget(HubConnectionContext connection, out RouteTarget target) { var targetValue = _options.EnableStickySession && connection.TryGetUid(out var uid) ? _cache.GetString(uid) : null; target = RouteTarget.FromString(targetValue); return(target != null); }
public static bool TryGetRouteTarget(this HubConnectionContext connection, out RouteTarget target) { target = null; if (connection.Metadata.TryGetValue("Target", out var value)) { target = (RouteTarget)value; } return(target != null); }
private void UpdateConnectionCount(string hubName, RouteTarget target, Func <int, int> updateFactory) { if (_serverStatus.TryGetValue(hubName, out var serverStatus)) { serverStatus.TryUpdate(target.ServerId, updateFactory); } if (_connectionStatus.TryGetValue($"{hubName}:{target.ServerId}", out var connectionStatus)) { connectionStatus.TryUpdate(target.ConnectionId, updateFactory); } }
public static void AddRouteTarget(this HubConnectionContext connection, RouteTarget target) { connection.Metadata.Add("Target", target); }