summaryrefslogtreecommitdiff
path: root/DSACore/Hubs
diff options
context:
space:
mode:
authorTrueDoctor <d-kobert@web.de>2018-09-27 23:46:43 +0200
committerTrueDoctor <d-kobert@web.de>2018-09-27 23:46:43 +0200
commitad0a46175e7efbbd5bdf952aacc69d8a7750b05a (patch)
tree4dc970234a3273940c59aecdb305bbca2b2e9ab3 /DSACore/Hubs
parent39da0da55a09a56bae3c250e6108c8edf77bfbfd (diff)
implemented rudemetary groups
Diffstat (limited to 'DSACore/Hubs')
-rw-r--r--DSACore/Hubs/ChatHub.cs31
1 files changed, 30 insertions, 1 deletions
diff --git a/DSACore/Hubs/ChatHub.cs b/DSACore/Hubs/ChatHub.cs
index 6af8c38..9cd7aed 100644
--- a/DSACore/Hubs/ChatHub.cs
+++ b/DSACore/Hubs/ChatHub.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using DSACore.Models;
using Microsoft.AspNetCore.SignalR;
namespace DSACore.Hubs
@@ -10,7 +11,35 @@ namespace DSACore.Hubs
{
public async Task SendMessage(string user, string message)
{
- await Clients.All.SendAsync("ReciveMessage", user, 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}));
}
+
+ private Task SendToGroup(string group, string user, string message)
+ {
+ return Clients.Group(group).SendCoreAsync("ReceiveMessage", new object[] { user, message });
+ }
+
+ public async Task Login(string group, string password)
+ {
+ if (password == "valid")
+ {
+ await Groups.AddToGroupAsync(Context.ConnectionId, group);
+ }
+
+ await SendToGroup(group, "", "Ein neuer Nutzer hat die Gruppe betreten");
+ }
+
+ public async Task Disconnect(string group, string user)
+ {
+ await Groups.RemoveFromGroupAsync(Context.ConnectionId, group);
+
+ await SendToGroup(group, user, "Connection lost");
+ }
+
}
}