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"); } }
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); }
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); }