예제 #1
0
        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();
        }
예제 #2
0
        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);
                }
            }
        }