Firstly, I know SignalR is the best websocket framework and i should use it instead of having fun with low level implementation.
But, Is there anyone who know how to correctly consume websocket in controller ? I am totally green.
Any good tutorial will be very helpful :)
I've tried do sth like this.
Middleware
 app.UseWebSockets();
 app.Use(async (context, next) =>
 {
        var http = (HttpContext)context;
        if (http.WebSockets.IsWebSocketRequest)
        {
         WebSocket webSocket = await http.WebSockets.AcceptWebSocketAsync();     
        }
         else
         {
            await next();
         }
 });
 //thanks to next(); app.UseMvc();
Controller
[Route("ws")]
    public class MonitorController : Controller
    {
        HttpContext context;
        WebSocket socket;
        public MonitorController(IHttpContextAccessor accessor)
        {
            this.context = accessor.HttpContext;
            if (!this.context.WebSockets.IsWebSocketRequest)
                throw new InvalidOperationException("incoming request is not a websocket request");
        }
        [HttpGet]
        public IActionResult Get()
        {
            return new MonitorWaiter(Wait);
        }
        .... some code MonitorWaiter.....
localhost:5000/ws
GET HTTP/1.1: 
Host: localhost:5000/ws
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
During debugging it get into middleware but it skip controller.
Thanks a lot for some advices.
I saw it can be done by adding server to handler -> app.Use(); and in controller use some client implementation, but the question remains what when i want to create a few servers ?
Related post: Using WebSockets with ASP.NET Web API
I dont know if is it true but i think it should be used normally websocket handler than trying to do sth with api controller.