Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequestPostGroupRead C# (CSharp) Метод

ProcessRequestPostGroupRead() приватный Метод

private ProcessRequestPostGroupRead ( Microsoft.AspNet.SignalR.HostContext context, string groupsToken ) : System.Threading.Tasks.Task
context Microsoft.AspNet.SignalR.HostContext
groupsToken string
Результат System.Threading.Tasks.Task
        private Task ProcessRequestPostGroupRead(HostContext context, string groupsToken)
        {
            string connectionId = Transport.ConnectionId;

            // Get the user id from the request
            string userId = UserIdProvider.GetUserId(context.Request);

            IList<string> signals = GetSignals(userId, connectionId);
            IList<string> groups = AppendGroupPrefixes(context, connectionId, groupsToken);

            Connection connection = CreateConnection(connectionId, signals, groups);

            Connection = connection;
            string groupName = PrefixHelper.GetPersistentConnectionGroupName(DefaultSignalRaw);
            Groups = new GroupManager(connection, groupName);

            // We handle /start requests after the PersistentConnection has been initialized,
            // because ProcessStartRequest calls OnConnected.
            if (IsStartRequest(context.Request))
            {
                return ProcessStartRequest(context, connectionId);
            }

            Transport.Connected = () =>
            {
                return TaskAsyncHelper.FromMethod(() => OnConnected(context.Request, connectionId).OrEmpty());
            };

            Transport.Reconnected = () =>
            {
                return TaskAsyncHelper.FromMethod(() => OnReconnected(context.Request, connectionId).OrEmpty());
            };

            Transport.Received = data =>
            {
                Counters.ConnectionMessagesSentTotal.Increment();
                Counters.ConnectionMessagesSentPerSec.Increment();
                return TaskAsyncHelper.FromMethod(() => OnReceived(context.Request, connectionId, data).OrEmpty());
            };

            Transport.Disconnected = clean =>
            {
                return TaskAsyncHelper.FromMethod(() => OnDisconnected(context.Request, connectionId, stopCalled: clean).OrEmpty());
            };

            return Transport.ProcessRequest(connection).OrEmpty().Catch(Trace, Counters.ErrorsAllTotal, Counters.ErrorsAllPerSec);
        }