public override async Task OnConnectedAsync() { this._logger.LogInformation("User Connected", Context.ToString()); var userHub = new UserHub { UserIdentifier = Context.UserIdentifier, ConnectionId = Context.ConnectionId }; _users.TryAdd(Context.ConnectionId, userHub); await base.OnConnectedAsync(); }
public async Task CloseSubscription(string json) { var request = JsonConvert.DeserializeAnonymousType(json, new { subscriptionId = string.Empty }); var result = _users.TryRemove(Context.ConnectionId, out UserHub userHub); if (userHub != null) { if (request != null && !String.IsNullOrEmpty(request.subscriptionId)) { var subToRemove = userHub.UserHubSubscription.Find(x => x.SubscriptionId == request.subscriptionId); await _connectionService.UnRegisterMessageProcessor(subToRemove.MessageProcessorId); await RemoveSubscription(subToRemove); _users.TryAdd(Context.ConnectionId, new UserHub { UserIdentifier = Context.UserIdentifier, ConnectionId = Context.ConnectionId, UserHubSubscription = userHub.UserHubSubscription.Where(x => x.SubscriptionId != request.subscriptionId).ToList() }); } else { foreach (var userHubSubscription in userHub.UserHubSubscription) { await _connectionService.UnRegisterMessageProcessor(userHubSubscription.MessageProcessorId); } foreach (var userHubSubscription in userHub.UserHubSubscription) { await RemoveSubscription(userHubSubscription); } UserHub userHub1 = new UserHub { UserIdentifier = Context.UserIdentifier, ConnectionId = Context.ConnectionId }; _users.TryAdd(Context.ConnectionId, userHub1); } } }