using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; using Squirrowse.Core.Models; namespace Squirrowse.Service.Hubs { public class StreamHub : Hub, IStreamHub //fujka { private readonly ILogger logger; public StreamHub(ILogger logger) { this.logger = logger; } public async Task AddClient() { throw new NotImplementedException(); } public async Task AddToGroup(Groups group, string user = "") { var connectionId = string.IsNullOrWhiteSpace(user) ? Context.ConnectionId : user; await Groups.AddToGroupAsync(connectionId, group.ToString()); logger.LogInformation($"{nameof(AddToGroup)}: {connectionId} joined to {group}"); } /// /// USE ONLY FOR DEBUG /// /// /// DESTRUCTION public async Task ExecCommandOnAll(string command, object[] act) { await Clients.All.SendCoreAsync(command, act); } public async Task RemoveFromGroup(Groups group, string user = "") { var connectionId = string.IsNullOrWhiteSpace(user) ? Context.ConnectionId : user; await Groups.RemoveFromGroupAsync(connectionId, group.ToString()); logger.LogInformation($"{nameof(AddToGroup)}: {connectionId} joined to {group}"); } public async Task Startstream(string clientId) { var client = Clients.Client(clientId); await client.SendAsync("Start"); } public async Task StopStream(string clientId) { var client = Clients.Client(clientId); await client.SendAsync("Stop"); } public async Task UploadByteStream(IAsyncEnumerable stream) { await foreach (var frame in stream) { logger.LogInformation($"Got frame size: {frame.Length} "); await Task.Delay(100); //leave some delay for debug purpose } } } }