.NET 库,可以将套接字从 HTTP 切换到 WebSocket 协议

Posted

技术标签:

【中文标题】.NET 库,可以将套接字从 HTTP 切换到 WebSocket 协议【英文标题】:.NET library which can switch socket from HTTP to WebSocket protocol 【发布时间】:2017-01-13 10:33:59 【问题描述】:

我需要使用我的自定义 Windows 服务处理单个端口 80 上的 HTTP 请求和 WebSocket 连接。

所以,据我了解:HTTP 连接应根据客户端的升级请求标头切换到 WebSocket 协议。

问题:有没有服务器库可以处理socket上的HTTP请求,并且可以按需切换socket到WebSocket?

或者对于独立应用程序/服务是否有其他解决方案?

【问题讨论】:

SignalR ??????? 它只是 IIS。对我来说不是解决方案。 asp.net/signalr/overview/deployment/tutorial-signalr-self-host 它有很多依赖项。我正在尝试解决我的 VS2010 上的所有冲突。这是因为所需的 .NET 版本 4.5。 【参考方案1】:

您可以使用 TCP 代理端口在两个目标之间划分流量。例如,所有流量都会进入端口 80,但随后 HTTP 流量将在内部路由到 8001,而 WS 流量将路由到 8002。 https://github.com/lifeemotions/websocketproxy

【讨论】:

使用您的解决方案,应用应该打开 3 个 TCP 端口并将流量重定向到自己。对吗? 您在 http 端口上设置 websocketproxy,在端口 8081 上运行 http 应用程序,在端口 8082 上运行 websocket 应用程序。Websocketproxy 自动将流量发送到所需位置(http 或 ws) 我必须使用多合一服务并且我试图消除冗余元素。 一个服务器不能有两个不同的软件应用程序监听同一个端口/IP 地址。您可以使用两个不同的 IP 地址 - 并将每个应用程序绑定到它们各自的 IP 地址。 我只想要一个应用程序在单个端口上同时使用两种协议。我相信这是可能的。但是我找不到合适的库来实现这个目标。

以上是关于.NET 库,可以将套接字从 HTTP 切换到 WebSocket 协议的主要内容,如果未能解决你的问题,请参考以下文章

我可以从 Eclipse 切换 SVN 存储库吗?

从私有存储库切换到公共存储库,但 github 页面不发布站点

WebSockets - 异常 HTTP/1.1 101

.NET 桌面客户端应用程序:套接字还是 HTTP 请求? [关闭]

将项目从 SQL 切换到 SQLite

如何将每个 /proc/net/tcp 条目与每个打开的套接字匹配?