@page "/hub"

Hub

@using Microsoft.AspNetCore.SignalR.Client @using Squirrowse.Core.Models @using Squirrowse.Core.Services @inject IConnectionManager _connection;
@if (agents.Count > 0) { @foreach (var agent in agents) {

@agent

} } else {

No Cams

}
@code{ private List agents = new List(); HubConnection connection; string imageSource = null; string CurrentViewCastAgent = null; protected async override Task OnInitializedAsync() { await _connection.InitConnection(ConnectionType.Server); connection = await _connection.GetConnection(); connection.On>("RecData", OnStreamDataReceived); //connection.On("NewScreenCastAgent", NewScreenCastAgent); //connection.On("RemoveScreenCastAgent", RemoveScreenCastAgent); //connection.On("OnStreamDataReceived", OnStreamDataReceived); //await connection.StartAsync(); } bool IsViewingCastOf(string agentName) { 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) { await foreach (var t in streamData) { var base64 = Convert.ToBase64String(t); imageSource = String.Format("data:image/jpg;base64,{0}", base64); StateHasChanged(); } } private async Task OnViewCastClicked(string agentName) { CurrentViewCastAgent = agentName; await connection.InvokeAsync("Start", agentName); } private async Task OnStopViewCastClicked(string agentName) { CurrentViewCastAgent = null; await connection.InvokeAsync("RemoveScreenCastViewer", agentName); imageSource = null; StateHasChanged(); } }