Usando WebSockets com API da Web do ASP.NET

Qual é o método preferido para usar websockets brutos em um aplicativo de API da Web do ASP.NET?

Nós gostaríamos de usarbinário WebSockets em algumas de nossas interfaces do aplicativo ASP.NET Web API. Estou com dificuldades para determinar como isso deve ser feito, pois parece haver várias implementações conflitantes e / ou desatualizadas online para .NET.

Existem exemplos que parecem ser ASP.NET como este1, mas eupensar deve haver um meio de usar websockets na estrutura da API da Web. Como eu sei, você pode usar o Signalr no WebAPI.

I pensamento usando Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler funcionaria, mas não sei como vincular o WebSocketHandler ao controlador ...

class MyServiceController : ApiController
{
    [HttpGet]
    public HttpResponseMessage SwitchProtocols (string param)
    {
        HttpContext currentContext = HttpContext.Current;
        if (currentContext.IsWebSocketRequest || 
            currentContext.IsWebSocketRequestUpgrading)
        {
            // several out-dated(?) examples would 
            // use 'new MySocketHandler' for ???
            var unknown = new ????
            currentContext.AcceptWebSocketRequest(unknown); 
            return Request.CreateResponse(HttpStatusCode.SwitchingProtocols);
        }   
    }
}

class MySocketHandler : WebSocketHandler
{
    public MySocketHandler(): base(2048){}

    ...
}

Infelizmente, AcceptWebSocketRequest não aceita mais um WebSocketHandler; sua nova assinatura é ...

public void AcceptWebSocketRequest(Func<AspNetWebSocketContext, Task> userFunc)

Alguém tem um link ou uma amostra rápida para implementar websockets brutos no aplicativo ASP.NET Web API que está atualizado?

questionAnswers(5)

yourAnswerToTheQuestion