ASP.NET Core 1.0 WebSocket设置?

14

我很难找到一个关于在ASP.NET Core 1.0中设置WebSockets的例子;它们似乎都是针对之前版本的ASP.NET,而且有些依赖于在我的情况下不存在于context下的属性。

主要文档也只有一个占位符。http://docs.asp.net/en/latest/

例如:

app.UseWebSockets();

app.Use(async (context, next) =>
{
    if (context.IsWebSocketRequest)
    {
        WebSocket webSocket = await context.AcceptWebSocketAsync();
        await EchoWebSocket(webSocket);
    }
    else
    {
        await next();
    }
});

由于 IsWebSocketRequest 现在已不存在,所以无法正常工作。在 ASP.NET Core 1.0 中,正确的方法是什么?


鉴于目前关于ASP.NET 5的信息缺乏,而且在谷歌上几乎找不到任何有价值的高级问题解答,我宁愿让这个问题保留下来,看看是否有人真正知道如何做。无论是测试版还是正式版,如果有人在使用,我认为这是一个有效的问题,尽管也许值得重构标题以反映测试版号码,这样它至少会与未来关于ASP.NET 5的问题分开,如果框架有很大的不同。 - Grofit
ASP.NET 5仍处于测试版阶段,因此您正在寻求有关移动目标的教程。而且目前ASP.NET 5中的Web Sockets构建似乎还没有准备好,因为构建失败了。 - mason
1
好的,beta二进制文件已经在NuGet上了。Beta通常意味着它们被锁定并且正在进行错误调试。我现在已经将其变成了一个具体的编码问题,希望这样可以跨越SO的障碍... - Meirion Hughes
1
虽然这与您的问题无关,但我还必须将websocket映射到子路径才能使其正常工作,可能是因为它与MVC发生了冲突。app.Map("/WebSockets", wsApp => { wsApp.UseWebSockets(); wsApp.Use(/*...*/); - angularsen
1个回答

13

经过一些拆解,看起来它被移动了一下; 还有一个新的WebSocketManager

app.UseWebSockets();

app.Use(async (context, next) =>
{
    var http = (HttpContext) context;

    if (http.WebSockets.IsWebSocketRequest)
    {
        WebSocket webSocket = await http.WebSockets.AcceptWebSocketAsync();
    }
});

最后发现是由于编译错误,它假定上下文的类型为 RequestDelegate。将使用更正为 context.WebSockets.IsWebSocketRequest 后,现在知道上下文是HttpContext


我正在尝试在.NET Core 1.0中实现WebSockets,但无法找到适用于它的软件包。您能否分享您使用的软件包以及我应该使用哪个客户端与React一起使用。这是我的问题链接:https://stackoverflow.com/questions/47534840/does-signalr-or-websockets-works-with-asp-net-core-1-0 谢谢。 - Mithun Ganatra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接