public static ISocketBuilder UseEndPoint <TEndPoint>(this ISocketBuilder socketBuilder) where TEndPoint : EndPoint { var endpoint = socketBuilder.ApplicationServices.GetRequiredService <TEndPoint>(); // This is a terminal middleware, so there's no need to use the 'next' parameter return(socketBuilder.Run(connection => endpoint.OnConnectedAsync(connection))); }
public static ISocketBuilder Run(this ISocketBuilder socketBuilder, Func <ConnectionContext, Task> middleware) { return(socketBuilder.Use(next => { return context => { return middleware(context); }; })); }
public static ISocketBuilder Use(this ISocketBuilder socketBuilder, Func <ConnectionContext, Func <Task>, Task> middleware) { return(socketBuilder.Use(next => { return context => { Func <Task> simpleNext = () => next(context); return middleware(context, simpleNext); }; })); }
public static ISocketBuilder UseHub <THub>(this ISocketBuilder socketBuilder) where THub : Hub { var endpoint = socketBuilder.ApplicationServices.GetRequiredService <HubEndPoint <THub> >(); return(socketBuilder.Run(connection => endpoint.OnConnectedAsync(connection))); }
public SocketServerHost(ISocketBuilder socketBuilder) { _socketBuilder = socketBuilder; _cancellationTokenSource = new CancellationTokenSource(); }