virtual public bool Connect(User user) { if (user == null || _connectedUsers.Where(u => u.Id == user.Id).FirstOrDefault() != null) { return(false); } IChatServiceCallback currentCallback = OperationContextWrapper.GetCallbackChannel <IChatServiceCallback>(); if (currentCallback == null) { return(false); } lock (syncObj) { _userCallbackPairs.Add(user.Id, currentCallback); _connectedUsers.Add(user); foreach (IChatServiceCallback callback in _userCallbackPairs.Values) { callback.RefreshUsers(_connectedUsers); callback.UserConnect(user); } } return(true); }