public FakeHubUser(string userId, string connectionId, string groupName) { HubUser = new HubUser(); _userId = userId; _connectionId = connectionId; _groupName = groupName; }
public void PostChatMessage(HubUser user, string chatMessage) { Clients.All.onNewChatMessage(user, chatMessage); user.IsTyping = false; Clients.Others.onIsUserTypingChanged(user); }
/// <summary> /// Called when a connection disconnects from this hub gracefully or due to a timeout. /// </summary> /// <param name="stopCalled">true, if stop was called on the client closing the connection gracefully; /// false, if the connection has been lost for longer than the /// <see cref="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout" />. /// Timeouts can be caused by clients reconnecting to another SignalR server in scaleout.</param> /// <returns> /// A <see cref="T:System.Threading.Tasks.Task" /> /// </returns> public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled) { try { Guid userName = RetrieveUserId(); string connectionId = Context.ConnectionId; HubUser user; Users.TryGetValue(userName, out user); if (user != null) { lock (user.ConnectionIds) { user.ConnectionIds.RemoveWhere(cid => cid.Equals(connectionId)); if (!user.ConnectionIds.Any()) { HubUser removedUser; Users.TryRemove(userName, out removedUser); } } } } catch { //Bug in SignalR causing Context.User.Identity.Name to sometime be null //when user disconnects, thus remove the connection manually. lock (Users) { HubUser entry = Users.Values.FirstOrDefault(v => v.ConnectionIds.Contains(Context.ConnectionId)); if (entry != null) { entry.ConnectionIds.Remove(Context.ConnectionId); } } } return(base.OnDisconnected(stopCalled)); }
public HubUser SetUser(string hubName, string name, string groupName, string realName, string note, DateTime createTime, DateTime updatedTime, DateTime expireTime, uint numLogin, AuthType authType, byte[] hashedPw, byte[] securePw) { var requestData = new SoftEtherParameterCollection { { "HubName", hubName }, { "Name", name }, { "GroupName", groupName }, { "Realname", SoftEtherValueType.UnicodeString, realName }, { "Note", SoftEtherValueType.UnicodeString, note }, { "CreatedTime", createTime }, { "UpdatedTime", updatedTime }, { "ExpireTime", expireTime }, { "NumLogin", numLogin }, { "AuthType", (int)authType }, { "HashedKey", hashedPw }, { "NtLmSecureHash", securePw } }; var rawData = _softEther.CallMethod("SetUser", requestData); return(HubUser.Deserialize(rawData)); }
public async Task JoinRoom(string roomName, HubUser user) { if (!Rooms.ContainsKey(roomName)) { Rooms.Add(roomName, new List <HubUser>()); } var users = Rooms[roomName]; user.ConnectionId = Context.ConnectionId; var currentUser = users.Find(u => u.Username == user.Username); if (currentUser == null) { users.Add(user); await SendMessageToGroup(new { type = "MemberJoin", data = user }, roomName); Rooms[roomName] = users; } else { currentUser.ConnectionId = Context.ConnectionId; } await Groups.AddToGroupAsync(Context.ConnectionId, roomName); await SendMessageToGroup(new { type = "MemberList", data = users }, roomName); }
public static HubUser IsOnline(HubUser user) { var userid = user.UserId; var connectionid = user.ConnectionId; return(_onlineUsers.Value.FirstOrDefault(u => u.UserId == userid || u.ConnectionId == connectionid)); }
public static void DeleteUser(HubUser user) { var onlineUser = IsOnline(user); if (onlineUser != null) { _onlineUsers.Value.Remove(onlineUser); } }
public bool Predicate(HubUser user) { var hashedPassword = Cryptography.CreateShaHash($"{context.Password}"); return(user != null && context.ClientId == user.ApplicationType && context.Username == user.UserName && hashedPassword == user.Password); }
public void IsUserTypingChanged(bool isUserTyping) { string userID = Context.ConnectionId; HubUser user = null; if ((user = users.FirstOrDefault(u => u.ID.Equals(Context.ConnectionId))) != null) { user.IsTyping = isUserTyping; Clients.Others.onIsUserTypingChanged(user); } }
public static void AddOnlineUser(HubUser hubUser) { if (OnlineUsers == null) { OnlineUsers = new List <HubUser>(); } if (OnlineUsers.FirstOrDefault(p => p.ID == hubUser.ID) == null) { OnlineUsers.Add(hubUser); } }
public HubUser DeleteUser(string hubName, string name) { var requestData = new SoftEtherParameterCollection { { "HubName", hubName }, { "Name", name } }; var rawData = _softEther.CallMethod("DeleteUser", requestData); return(HubUser.Deserialize(rawData)); }
public void RemoveHubUserConnection(HubUser user, string connectionId) { var hubUser = hubUsers.FirstOrDefault(x => x.UserId == user.UserId); if (hubUser != null) { var hubConnection = hubUser.HubConnections.FirstOrDefault(x => x.ConnectionId == connectionId); if (hubConnection != null) { hubUser.HubConnections.Remove(hubConnection); } } }
/// <summary> /// Called when the connection connects to this hub instance. /// </summary> /// <returns> /// A <see cref="T:System.Threading.Tasks.Task" /> /// </returns> public override System.Threading.Tasks.Task OnConnected() { Guid userName = RetrieveUserId(); string connectionId = Context.ConnectionId; HubUser user = Users.GetOrAdd(userName, _ => new HubUser { UserId = userName, ConnectionIds = new HashSet <string>() }); lock (user.ConnectionIds) { user.ConnectionIds.Add(connectionId); } return(base.OnConnected()); }
public override System.Threading.Tasks.Task OnDisconnected() { string userID = Context.ConnectionId; HubUser user = null; if ((user = users.FirstOrDefault(u => u.ID.Equals(Context.ConnectionId))) != null) { Clients.Caller.onConnectionDeinitialized(); Clients.Others.onUserDisconnected(user.ID); users.Remove(user); } return(base.OnDisconnected()); }
private void LogNotification(NotificationGetFullApiModel notification, HubUser user = null) { try { Log.Current.Message($@" ================ Push Notification log ================ User: {notification.ToUserId} Model type: {notification.NotificationDataType} Notification type: {notification.NotificationType} Connectioin ids: {JsonConvert.SerializeObject(user?.ConnectionIds)} ================ End of log ================ "); } catch (Exception) { } }
public async Task LeaveRoom(string roomName, HubUser user) { if (Rooms.ContainsKey(roomName)) { var users = Rooms[roomName] ?? new List <HubUser>(); var currentUser = users.First(u => u.Username == user.Username); if (currentUser != null) { await Groups.RemoveFromGroupAsync(Context.ConnectionId, roomName).ConfigureAwait(true); users.Remove(currentUser); Rooms[roomName] = users; await SendMessageToGroup(new { type = "MemberList", data = users }, roomName); } } }
public void InitializeConnection(string userName) { string userID = Context.ConnectionId; if (!users.Exists(u => u.ID.Equals(userID))) { HubUser user = new HubUser(userID, userName); users.Add(user); Clients.Caller.onConnectionInitialized(users, user); Clients.Others.onUserConnected(user); } else { throw new Exception(); } }
public async Task <ActionResult> Register(RegisterViewModel model) { ModelState.Remove("Id"); if (ModelState.IsValid) { if (string.IsNullOrEmpty(model.Avatar)) { model.Avatar = "/Content/plugins/dist/img/avatar5.png"; } var newUser = new ApplicationUser { UserName = model.Email, Email = model.Email, FullName = model.FullName, Avartar = model.Avatar, CommonPassword = model.Password }; var result = await UserManager.CreateAsync(newUser, model.Password); if (result.Succeeded) { var user = await _userManager.FindByEmailAsync(model.Email); var hubUser = new HubUser(); //{ // ID = user.Id, // Email = user.Email, // UserName = user.UserName, // FullName = user.FullName, // Avatar = user.Avartar, // ConnectionId = new List<Connection>(), // Connected = false //}; _dbContext.HubUsers.Add(hubUser); _dbContext.SaveChanges(); var addRole = await _userManager.AddToRoleAsync(user.Id, "User"); if (addRole.Succeeded) { TempData["success"] = "Thêm mới thành viên thành công!"; return(RedirectToAction("Register", "Account")); } } } // If we got this far, something failed, redisplay form return(View(model)); }
/// <summary> /// Registering a new client will add the client to the current list of clients /// and save the connection id which will be used to communicate with the client. /// </summary> /// <param name="data">The player name</param> public void RegisterClient(string data) { lock (_syncRoot) { var user = users.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId); if (user == null) { user = new HubUser { ConnectionId = Context.ConnectionId, Name = counter.ToString() }; users.Add(user); } counter++; user.IsPlaying = false; } SendStatsUpdate(); }
private void CreateHubUser(OZChatDbContext context) { var user = context.Users.FirstOrDefault(p => p.Email == "*****@*****.**"); if (user != null) { var hubUser = new HubUser(); //{ // ID = user.Id, // Email = user.Email, // UserName = user.UserName, // FullName = user.FullName, // Avatar = user.Avartar, // ConnectionId = new List<Connection>(), // Connected = false //}; context.HubUsers.Add(hubUser); context.SaveChanges(); } }
public void AddHubUserConnection(HubUser user, string connectionId) { var hubConnection = new HubConnection { ConnectionId = connectionId, ConnectionStarted = DateTime.UtcNow }; var hubUser = hubUsers.FirstOrDefault(x => x.UserId == user.UserId); if (hubUser != null) { hubUser.HubConnections.Add(hubConnection); } else { user.HubConnections.Add(hubConnection); hubUsers.Add(user); } }
public void AddConnection(string connectionId, string userName) { lock (@lock) { HubUser existingHubUser = null; if (HubUserList.Any(x => x.UserName.Equals(userName))) { existingHubUser = HubUserList.Single(x => x.UserName.Equals(userName)); } if (existingHubUser != null) { existingHubUser.Ids.Add(connectionId); } else { HubUserList.Add(new HubUser(userName, connectionId)); } Sessions.Add(new Session(DateTime.Now, userName, connectionId)); } }
public virtual void AddConnectionId(string userId, string connectionId) { lock (UsersLocker) { var user = Users.FirstOrDefault(x => x.UserId == userId); if (user == null) { user = new HubUser() { UserId = userId, }; Users.Add(user); } if (user.ConnectionIds.Any(x => x == connectionId) == false) { user.ConnectionIds.Add(connectionId); } } }
internal static async Task OnTokenValidated(TokenValidatedContext context) { var userService = context.HttpContext.RequestServices.GetService <IUserService <HubUser> >(); var identity = (ClaimsIdentity)context.Principal.Identity; var user = await userService.GetUserFromIssuerAsync(identity.FindFirst("iss").Value, identity.FindFirst("sub").Value, context.HttpContext.RequestAborted); // Create a new user if they do not exist locally fill and in the defaults. if (user == null) { user = new HubUser { Name = identity.Name, Email = identity.FindFirst("email").Value, Issuer = identity.FindFirst("iss").Value, Subject = identity.FindFirst("sub").Value, }; await userService.CreateUserAsync(user); } }
public HubUser CreateUser(string hubName, string name, string password, string groupName = null, string realName = null, string note = null, DateTime?expireTime = null) { var hashPair = _softEther.CreateUserHashAndNtLm(name, password); var requestData = new SoftEtherParameterCollection { { "HubName", hubName }, { "Name", name }, { "GroupName", groupName }, { "Realname", SoftEtherValueType.UnicodeString, realName }, { "Note", SoftEtherValueType.UnicodeString, note }, { "ExpireTime", expireTime }, { "AuthType", (int)AuthType.Password }, { "HashedKey", hashPair.Hash }, { "NtLmSecureHash", hashPair.SaltedHash } }; var rawData = _softEther.CallMethod("CreateUser", requestData); return(HubUser.Deserialize(rawData)); }
public async Task SeedAsync() { ctx.Database.EnsureCreated(); HubUser user = await userManager.FindByEmailAsync("*****@*****.**"); if (user == null) { user = new HubUser() { FirstName = "Daniel", LastName = "Tassi", Email = "*****@*****.**", UserName = "******" }; var result = await userManager.CreateAsync(user, "P@55w0rd!"); if (result != IdentityResult.Success) { throw new InvalidOperationException("Could not create new user in seeder"); } } }
private bool OptionalPredicateDefault(HubUser model) { return(true); }
public static void AddUser(HubUser user) { DeleteUser(user); _onlineUsers.Value.Add(user); }
public HubUser SetUser(string hubName, HubUser user) { return(SetUser(hubName, user.Name, user.GroupName, user.Realname, user.Note, user.CreatedTime, user.UpdatedTime, user.ExpireTime, user.NumLogin, user.AuthType, user.HashedKey, user.NtLmSecureHash)); }
public FakeHubUser() { HubUser = new HubUser(); SetDefaults(); }