public void Connect(User user)
 {
     _callBack = OperationContext.Current.GetCallbackChannel <IMessageServiceCallBack>();
     if (_callBack != null)
     {
         _clients.Add(user.UserId, _callBack);
         _users.Add(user);
         _clients?.ToList().ForEach(c => c.Value.UserConnected(_users));
         Console.WriteLine($"{user.Name} just connected");
     }
 }
Ejemplo n.º 2
0
        public int LeaveTheConversation(string userName)
        {
            Console.WriteLine($"User {userName} is going to leave the conversation!");

            IMessageServiceCallBack registeredUser =
                OperationContext.Current.GetCallbackChannel <IMessageServiceCallBack>();

            if (_callbackList.Contains(registeredUser))
            {
                _callbackList.Remove(registeredUser);
                Console.WriteLine($"User {userName} has left the conversation!");
            }
            _callbackList.ForEach((serviceCallBack) => serviceCallBack.NotifyUserLeftTheConversation(userName));

            Console.WriteLine($"Other users notified");

            return(_callbackList.Count);
        }
Ejemplo n.º 3
0
        public int JoinTheConversation(string userName)
        {
            IMessageServiceCallBack registeredUser =
                OperationContext.Current.GetCallbackChannel <IMessageServiceCallBack>();

            Console.WriteLine($"User {userName} joined the conversation");
            if (!_callbackList.Contains(registeredUser))
            {
                _callbackList.Add(registeredUser);
            }
            Console.WriteLine("Sending notification to all users...");
            _callbackList.ForEach((callback) =>
            {
                callback.NotifyUserJoinedTheConversation(userName);
            });
            Console.WriteLine("Notification is sent.");
            Console.WriteLine($"Users count: {_callbackList.Count}");
            return(_callbackList.Count);
        }