private Func <HttpContext, Func <Task>, Task> GetWebSocketMiddleware() { return(async(context, next) => { if (context.WebSockets.IsWebSocketRequest) { using (var webSocket = await context.WebSockets.AcceptWebSocketAsync()) { INamespace nsp = Of(context.Request.Path); var socket = ConstructSocket(webSocket, nsp); nsp.AddSocket(socket); await socket.StartListen(); } } else { await next(); } }); }