diff --git a/Squirrowse.Client/Squirrowse.Client.csproj b/Squirrowse.Client/Squirrowse.Client.csproj index a134225..a913c13 100644 --- a/Squirrowse.Client/Squirrowse.Client.csproj +++ b/Squirrowse.Client/Squirrowse.Client.csproj @@ -15,4 +15,10 @@ + + + + Always + + diff --git a/Squirrowse.Service/Hubs/IStreamHub.cs b/Squirrowse.Service/Hubs/IStreamHub.cs index cdbb558..ff80bdb 100644 --- a/Squirrowse.Service/Hubs/IStreamHub.cs +++ b/Squirrowse.Service/Hubs/IStreamHub.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Threading.Tasks; using Squirrowse.Core.Models; @@ -13,5 +14,7 @@ namespace Squirrowse.Service.Hubs Task ExecCommandOnAll(string command, object[] act); //gni Task AddToGroup(Groups group, string user = ""); Task RemoveFromGroup(Groups group, string user = ""); + Task> GetListOfTypeUser(ConnectionType t); + Task> GetAllUsers(); } } \ No newline at end of file diff --git a/Squirrowse.Service/Hubs/IStreamManager.cs b/Squirrowse.Service/Hubs/IStreamManager.cs index e8f7f3b..a24099f 100644 --- a/Squirrowse.Service/Hubs/IStreamManager.cs +++ b/Squirrowse.Service/Hubs/IStreamManager.cs @@ -11,5 +11,7 @@ namespace Squirrowse.Service.Hubs Task RemoveUserByUserName(string agentName); IEnumerable getServerSideUsers(); bool CheckUser(string agentName); + IEnumerable getClientSideUsers(); + IEnumerable getAllUsers(); } } \ No newline at end of file diff --git a/Squirrowse.Service/Hubs/StreamHub.cs b/Squirrowse.Service/Hubs/StreamHub.cs index aec04da..11e6a58 100644 --- a/Squirrowse.Service/Hubs/StreamHub.cs +++ b/Squirrowse.Service/Hubs/StreamHub.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; @@ -22,8 +23,11 @@ namespace Squirrowse.Service.Hubs public async Task AddUser(string UserName, ConnectionType type) { await manager.AddUser(Context.ConnectionId, UserName,type); + logger.LogInformation($"{nameof(AddUser)}: {UserName} of {type}"); + } + public async Task AddToGroup(Groups group, string user = "") { var connectionId = string.IsNullOrWhiteSpace(user) ? Context.ConnectionId : user; @@ -67,7 +71,7 @@ namespace Squirrowse.Service.Hubs { foreach (var user in manager.getServerSideUsers()) { - Clients.Client(user.ConnectionId).SendAsync("RecData", stream); + await Clients.Client(user.ConnectionId).SendAsync("RecData", stream); } await foreach (var frame in stream) { @@ -75,5 +79,17 @@ namespace Squirrowse.Service.Hubs await Task.Delay(100); //leave some delay for debug purpose } } + + public async Task> GetListOfTypeUser(ConnectionType t) + { + if (t == ConnectionType.Client) return manager.getClientSideUsers(); + if (t == ConnectionType.Server) return manager.getServerSideUsers(); + throw new Exception("not found") ; + } + + public async Task> GetAllUsers() + { + return manager.getAllUsers(); + } } } \ No newline at end of file diff --git a/Squirrowse.Service/Hubs/StreamManager.cs b/Squirrowse.Service/Hubs/StreamManager.cs index b727dff..e5c7340 100644 --- a/Squirrowse.Service/Hubs/StreamManager.cs +++ b/Squirrowse.Service/Hubs/StreamManager.cs @@ -7,7 +7,7 @@ namespace Squirrowse.Service.Hubs { public class StreamManager : IStreamManager { - private readonly List _users = new List(); //temporary + private List _users = new List(); //temporary public Task AddUser(string connectionId, string userName,ConnectionType type) { @@ -31,10 +31,19 @@ namespace Squirrowse.Service.Hubs { return _users.Where(user => user.UserType == ConnectionType.Server); } - + public IEnumerable getClientSideUsers() + { + return _users.Where(user => user.UserType == ConnectionType.Client); + } public bool CheckUser(string userName) { return _users.Any(user => user.AgentName == userName); } + + public IEnumerable getAllUsers() + { + var t = _users; + return _users; + } } } \ No newline at end of file diff --git a/Squirrowse.Service/Properties/launchSettings.json b/Squirrowse.Service/Properties/launchSettings.json index 78db389..0881dee 100644 --- a/Squirrowse.Service/Properties/launchSettings.json +++ b/Squirrowse.Service/Properties/launchSettings.json @@ -19,7 +19,7 @@ }, "Squirrowse.Service": { "commandName": "Project", - "launchBrowser": true, + "launchBrowser": false, "launchUrl": "weatherforecast", "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { diff --git a/Squirrowse.Service/Squirrowse.Service.csproj b/Squirrowse.Service/Squirrowse.Service.csproj index efe8c59..6a103d7 100644 --- a/Squirrowse.Service/Squirrowse.Service.csproj +++ b/Squirrowse.Service/Squirrowse.Service.csproj @@ -22,4 +22,10 @@ + + + Always + + + \ No newline at end of file diff --git a/Squirrowse.Service/Startup.cs b/Squirrowse.Service/Startup.cs index 51dbdce..c43ab37 100644 --- a/Squirrowse.Service/Startup.cs +++ b/Squirrowse.Service/Startup.cs @@ -24,8 +24,8 @@ namespace Squirrowse.Service { services.AddControllers(); services.AddMediatR(Assembly.GetAssembly(typeof(Startup))); - services.AddTransient(); - services.AddTransient(); + services.AddSingleton(); + services.AddSingleton(); services.AddCoreModule(); services.AddSignalR() .AddHubOptions - @if (agents.Count > 0) + @if (agents.Any()) { @foreach (var agent in agents) {

- @agent + @agent.AgentName -> @agent.UserType.ToString()

- -
@@ -42,7 +42,7 @@
@code{ - private List agents = new List(); + private IEnumerable agents = new List(); HubConnection connection; string imageSource = null; @@ -52,9 +52,9 @@ { await _connection.InitConnection(ConnectionType.Server); connection = await _connection.GetConnection(); - + connection.On>("RecData", OnStreamDataReceived); - + agents = await connection.InvokeAsync>("GetListOfTypeUser",ConnectionType.Client); //connection.On("NewScreenCastAgent", NewScreenCastAgent); //connection.On("RemoveScreenCastAgent", RemoveScreenCastAgent); //connection.On("OnStreamDataReceived", OnStreamDataReceived); @@ -67,19 +67,6 @@ return agentName == CurrentViewCastAgent; } - void NewScreenCastAgent(string agentName) - { - agents.Add(agentName); - StateHasChanged(); - } - - void RemoveScreenCastAgent(string agentName) - { - agents.Remove(agentName); - imageSource = null; - CurrentViewCastAgent = null; - StateHasChanged(); - } async void OnStreamDataReceived(IAsyncEnumerable streamData) { @@ -95,13 +82,13 @@ private async Task OnViewCastClicked(string agentName) { CurrentViewCastAgent = agentName; - await connection.InvokeAsync("Start", agentName); + await connection.InvokeAsync("Startstream", agentName); } private async Task OnStopViewCastClicked(string agentName) { CurrentViewCastAgent = null; - await connection.InvokeAsync("RemoveScreenCastViewer", agentName); + await connection.InvokeAsync("Stopstream", agentName); imageSource = null; StateHasChanged(); } diff --git a/Squirrowse.Web/Properties/launchSettings.json b/Squirrowse.Web/Properties/launchSettings.json index 220ace8..3c49e20 100644 --- a/Squirrowse.Web/Properties/launchSettings.json +++ b/Squirrowse.Web/Properties/launchSettings.json @@ -18,7 +18,7 @@ "Squirrowse.Web": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:5001;http://localhost:5000", + "applicationUrl": "https://localhost:5003;http://localhost:5002", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/Squirrowse.Web/Squirrowse.Web.csproj b/Squirrowse.Web/Squirrowse.Web.csproj index 13cf113..effcb92 100644 --- a/Squirrowse.Web/Squirrowse.Web.csproj +++ b/Squirrowse.Web/Squirrowse.Web.csproj @@ -12,4 +12,10 @@ + + + Always + + +