using System; using System.Collections.Generic; using System.Security.Claims; using System.Threading.Tasks; namespace SocketsSample.Hubs { public class Hub { public IHubConnectionContext Clients { get; set; } public HubCallerContext Context { get; set; } } public interface IHubConnectionContext { IClientProxy All { get; } IClientProxy Client(string connectionId); } public interface IClientProxy { /// /// Invokes a method on the connection(s) represented by the instance. /// /// name of the method to invoke /// argumetns to pass to the client /// A task that represents when the data has been sent to the client. Task Invoke(string method, params object[] args); } public class HubCallerContext { public HubCallerContext(string connectionId, ClaimsPrincipal user) { ConnectionId = connectionId; User = user; } public ClaimsPrincipal User { get; } public string ConnectionId { get; } } }