diff options
Diffstat (limited to 'DSACore/Hubs')
-rw-r--r-- | DSACore/Hubs/ChatHub.cs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/DSACore/Hubs/ChatHub.cs b/DSACore/Hubs/ChatHub.cs index 9cd7aed..a8bf883 100644 --- a/DSACore/Hubs/ChatHub.cs +++ b/DSACore/Hubs/ChatHub.cs @@ -9,14 +9,15 @@ namespace DSACore.Hubs { public class ChatHub : Hub { + private static Dictionary<string, User> UserGroup; + public async Task SendMessage(string user, string message) { - string group = "default"; var args = message.Split(' ', StringSplitOptions.RemoveEmptyEntries).ToList(); var ident = args.First().Replace("!", ""); if(args.Count>0){args.RemoveAt(0);} - await SendToGroup(group, user, Commands.CommandHandler.ExecuteCommand(new Command{CharId = 0,CmdIdentifier = ident, CmdTexts = args, Name = user})); + await SendToGroup(UserGroup[Context.ConnectionId].Group, user, Commands.CommandHandler.ExecuteCommand(new Command{CharId = 0,CmdIdentifier = ident, CmdTexts = args, Name = user})); } private Task SendToGroup(string group, string user, string message) @@ -24,21 +25,29 @@ namespace DSACore.Hubs return Clients.Group(group).SendCoreAsync("ReceiveMessage", new object[] { user, message }); } + public async Task GetGroups() + { + await Clients.Caller.SendCoreAsync("ListGroups", new object[] { "TheCrew", "Testdata" }); + throw new NotImplementedException("add database call to get groups"); + } + public async Task Login(string group, string password) { if (password == "valid") { + UserGroup.Add(Context.ConnectionId, new User{Group = group}); await Groups.AddToGroupAsync(Context.ConnectionId, group); } await SendToGroup(group, "", "Ein neuer Nutzer hat die Gruppe betreten"); } - public async Task Disconnect(string group, string user) + public async Task Disconnect() { - await Groups.RemoveFromGroupAsync(Context.ConnectionId, group); + var user = UserGroup[Context.ConnectionId]; + await Groups.RemoveFromGroupAsync(Context.ConnectionId, user.Group); - await SendToGroup(group, user, "Connection lost"); + await SendToGroup(user.Group, user.Name, "Connection lost"); } } |