【问题标题】:ASP.NET Core 1.0 WebSocket Setup?ASP.NET Core 1.0 WebSocket 设置?
【发布时间】:2016-02-22 23:56: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 的信息,而且在 google 上对于更高级的问题几乎没有任何价值,我宁愿留下问题,看看是否有人真的知道如何去做.如果人们使用它,我会说它是一个有效的问题,尽管也许值得重构标题以反映 beta 数字,因此如果框架是,它至少会与 ASP.NET 5 的未来问题分开大不相同。
  • ASP.NET 5 仍处于测试阶段,因此您需要关于移动目标的教程。 Web Sockets in ASP.NET 5 的当前构建似乎还没有准备好,因为构建失败了。
  • 测试版二进制文件在 NuGet 上。 Beta 通常意味着它们被锁定并寻找错误。我现在已经把它变成了一个特定的编码问题,所以希望它能跳过 SO 箍......
  • 与您的问题没有特别相关,但我还必须将 websocket 映射到子路径才能使其工作,可能是因为它与 MVC 冲突。 app.Map("/WebSockets", wsApp => { wsApp.UseWebSockets(); wsApp.Use(/*...*/);

标签: websocket asp.net-core


【解决方案1】:

经过一些拆卸后,它看起来好像被移动了一点;还有一个新的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,但无法找到适用于它的软件包。你能分享一下你用了什么包吗?我应该用什么客户端来反应。这是我的问题的链接stackoverflow.com/questions/47534840/… 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2016-05-04
  • 1970-01-01
相关资源
最近更新 更多