【问题标题】:Create a websocket server olny for .net core console application without using Asp .net core packages仅为 .net 核心控制台应用程序创建 websocket 服务器,而不使用 Asp .net 核心包
【发布时间】:2020-09-03 17:07:57
【问题描述】:

我们需要将我们的应用程序迁移到 .Net 核心,并且我们依赖于为 .Net Framework 3.5 构建的 websocket 库。 websocket-sharp

直到现在我还没有找到只使用 .Net Core 而不是 Asp Net core 的 websocket 库实现。

带有 ASP 的库示例如下:

但我们不会使用 ASP 包来集成 à websocket 实现。 谁能帮我找到一个只使用 .Net 核心层而不是 ASP.Net 核心的 websocket 实现?

【问题讨论】:

    标签: asp.net-core .net-core websocket websocket-sharp


    【解决方案1】:

    这是一个依赖 Kestrel 或 ASP 的 Web 套接字服务器,使其与 .NET Core 和 Mono 完全兼容。

    https://github.com/jchristn/WatsonWebsocket

    由于其最小的依赖性,它应该是非常面向未来的。请注意,作者是前 Cisco 工程师,拥有其他几个易于使用的 .net 客户端/服务器库。我非常轻松和成功地使用了他的其他库。他的努力值得支持和尊重。

    他的库的一大优点是它们非常小。它们仅提供您希望为服务器和客户端提供的最基本的必需品,从而使启动和运行尽可能容易。诸如客户端管理、请求路由等之类的事情将取决于您来实现。我觉得这非常有利。

    2020 年 11 月 7 日更新:Joel 表示他打算重写 WatsonWebSocket 的底层部分,使其不依赖于 HttpListener 或 http.sys。它将依赖于他的备用自定义 http 侦听器。这是个好消息,因为 HttpListener 已被弃用,而且前景不乐观。

    【讨论】:

      【解决方案2】:

      抽象的ClientWebSocketClass 是一个不依赖于 ASP.NET 核心的 websockets 实现。因此,您可以使用它与任何 websocket 实现进行客户端通信。

      服务器端需要一个 HTTP 服务器,因为 websocket 连接是通过创建一个普通的 HTTP 请求来实现的,并且连接被升级到 websocket。所以你需要一个网络服务器来接收初始请求。

      【讨论】:

      • 感谢您的重播。在我们的例子中,我们需要在服务器端实现。你有什么建议可以在不使用 ASP.net 核心但只使用 .net 核心的情况下提供像 websocket-sharp 这样的 HTTP 服务器提前谢谢
      • 你可以使用HttpListener类实现你自己的HTTP服务器。它可以接受使用GetContextAsync 方法的连接,进而可以使用HttpListenerContext.AcceptWebSocketAsync 升级到websocket 的连接。但是您将不得不像 Kestrel 这样的 Web 服务器自己做很多繁重的工作。
      • 当你播种时,自己做会更重。我会继续寻找,如果我找到了解决方案,我会告诉你
      猜你喜欢
      • 2018-06-28
      • 2019-09-26
      • 1970-01-01
      • 2018-05-14
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      相关资源
      最近更新 更多