aboutsummaryrefslogtreecommitdiff
path: root/backend/api
diff options
context:
space:
mode:
authorOgnjen Cirkovic <ciraboxkg@gmail.com>2022-05-09 21:02:40 +0200
committerOgnjen Cirkovic <ciraboxkg@gmail.com>2022-05-09 21:02:40 +0200
commitc7e4202d2279897f1601dbd70a2485280e17e3f6 (patch)
treebe7712cff0b2d8c8083931b24f0e6bf729642aa0 /backend/api
parent871dd94fc9c5d037bac69d0be95b7e73361949a4 (diff)
Omoguceno da korisnik moze da ima vise sesija koje poseduju konekciju sa webSocket-om. Time moze da dobija notifikacije iz bilo koje sesije. Omogucen prikaz treniranja ukoliko zeli da trenira vise modela odjednom.
Diffstat (limited to 'backend/api')
-rw-r--r--backend/api/api/Controllers/ModelController.cs3
-rw-r--r--backend/api/api/Controllers/PredictorController.cs3
-rw-r--r--backend/api/api/Services/ChatHub.cs39
-rw-r--r--backend/api/api/Services/MlConnectionService.cs5
4 files changed, 25 insertions, 25 deletions
diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs
index a0e51e1f..3145a080 100644
--- a/backend/api/api/Controllers/ModelController.cs
+++ b/backend/api/api/Controllers/ModelController.cs
@@ -86,7 +86,8 @@ namespace api.Controllers
var user = _userService.GetUserById(model.uploaderId);
if (ChatHub.CheckUser(user._id))
- await _ichat.Clients.Client(ChatHub.Users[user._id]).SendAsync("NotifyEpoch",model.name,info.ModelId,info.Stat,model.epochs,info.EpochNum);
+ foreach (var connection in ChatHub.getAllConnectionsOfUser(user._id))
+ await _ichat.Clients.Client(connection).SendAsync("NotifyEpoch",model.name,info.ModelId,info.Stat,model.epochs,info.EpochNum);
return Ok();
}
diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs
index 3646187e..3a9e6649 100644
--- a/backend/api/api/Controllers/PredictorController.cs
+++ b/backend/api/api/Controllers/PredictorController.cs
@@ -162,7 +162,8 @@ namespace api.Controllers
return BadRequest("Model not found or user doesnt exist");
_predictorService.Create(predictor);
if (ChatHub.CheckUser(user._id))
- await _ichat.Clients.Client(ChatHub.Users[user._id]).SendAsync("NotifyPredictor", predictor._id,model.name);
+ foreach(var connection in ChatHub.getAllConnectionsOfUser(user._id))
+ await _ichat.Clients.Client(connection).SendAsync("NotifyPredictor", predictor._id,model.name);
return CreatedAtAction(nameof(Get), new { id = predictor._id }, predictor);
}
diff --git a/backend/api/api/Services/ChatHub.cs b/backend/api/api/Services/ChatHub.cs
index 47a1f099..790b4de6 100644
--- a/backend/api/api/Services/ChatHub.cs
+++ b/backend/api/api/Services/ChatHub.cs
@@ -23,10 +23,7 @@ namespace api.Services
if (token == null)
return;
string id=_tokenService.TokenToId(token);
- if (!Users.ContainsKey(id))
- Users.Add(id, Context.ConnectionId);
- else
- Users[id] = Context.ConnectionId;
+ Users.Add(Context.ConnectionId,id);
//await SendDirect(id, "poruka");
//await Send(Context.ConnectionId);
await base.OnConnectedAsync();
@@ -34,27 +31,27 @@ namespace api.Services
}
public override async Task OnDisconnectedAsync(Exception? exception)
{
- var user = Users.Values.Contains(Context.ConnectionId);
- if (user==false)
- return;
- Users.Remove(Users.FirstOrDefault(u => u.Value == Context.ConnectionId).Key);
+ Users.Remove(Context.ConnectionId);
}
- public async Task SendDirect(string id,string message)
- {
- if (Users[id]==null)
- return;
-
- await Clients.Client(Users[id]).SendAsync("Notify",message);
- }
- public async Task Send(string message)
+ public static bool CheckUser(string id)
{
- await Clients.All.SendAsync("Notify",message);
+ var users=Users.Values;
+ foreach (var user in users)
+ {
+ if(user==id)
+ return true;
+ }
+ return false;
}
- public static bool CheckUser(string id)
+ public static List<string> getAllConnectionsOfUser(string id)
{
- if (Users[id] == null)
- return false;
- return true;
+ List<string> keys=new List<string>();
+ foreach (var user in Users)
+ {
+ if(user.Value==id)
+ keys.Add(user.Key);
+ }
+ return keys;
}
}
diff --git a/backend/api/api/Services/MlConnectionService.cs b/backend/api/api/Services/MlConnectionService.cs
index 17c0f8b8..b6d422ad 100644
--- a/backend/api/api/Services/MlConnectionService.cs
+++ b/backend/api/api/Services/MlConnectionService.cs
@@ -59,8 +59,9 @@ namespace api.Services
Dataset newDataset = JsonConvert.DeserializeObject<Dataset>(result.Content);
newDataset.isPreProcess = true;
_datasetService.Update(newDataset);
- if(ChatHub.CheckUser(id))
- await _ichat.Clients.Client(ChatHub.Users[id]).SendAsync("NotifyDataset",newDataset.name,newDataset._id);
+ if (ChatHub.CheckUser(id))
+ foreach (var connection in ChatHub.getAllConnectionsOfUser(id))
+ await _ichat.Clients.Client(connection).SendAsync("NotifyDataset",newDataset.name,newDataset._id);
return;
}