Ejemplo n.º 1
0
        /// <summary>
        /// Method is used in Util.js
        /// </summary>
        /// <param name="userName"></param>
        public void Connect(string userName)
        {
            lock (Locker)
            {
                if (Competitors.Count + 1 > MaxCount)
                {
                    Clients.Caller.onMaxCount(MaxCount);
                    return;
                }

                if (Competitors.Any(x => string.Equals(x.Name, userName, StringComparison.OrdinalIgnoreCase)))
                {
                    Clients.Caller.onAlreadyPresent(userName);
                    return;
                }

                if (Competitors.Any(x => x.Id == Context.ConnectionId))
                {
                    return;
                }

                var newCompetitor = Competitor.NewCompetitor(Context.ConnectionId, userName);
                Competitors.Add(newCompetitor);
                Clients.Caller.onUserConnected(userName, Competitors);
                Clients.AllExcept(Context.ConnectionId).onUpdateUsers(Competitors);
                SendCurrentQuestion();
            }
        }