Beispiel #1
0
        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)));
        }
Beispiel #2
0
 public static ISocketBuilder Run(this ISocketBuilder socketBuilder, Func <ConnectionContext, Task> middleware)
 {
     return(socketBuilder.Use(next =>
     {
         return context =>
         {
             return middleware(context);
         };
     }));
 }
Beispiel #3
0
 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();
 }