【问题标题】:Websocket Server Behind IIS 7 Reverse ProxyIIS 7 反向代理背后的 Websocket 服务器
【发布时间】:2011-12-20 10:50:38
【问题描述】:

我使用 .NET 4.0 和 Sockets 使用 hybi-17 规范构建了一个 WebSocket 聊天服务器。如果浏览器在端口 81 上连接到聊天服务器,则一切正常。但是由于公司防火墙等原因 - 我需要通过浏览器连接到端口 80,因为这需要世界上的每台 PC 都可以访问。

所以我使用IIS 7 as a reverse proxy。我设法让浏览器连接到 IIS 7 上的 ws://localhost/chatProxy,然后将请求代理到 websocket 服务器正在侦听的 http://localhost:81/chatProxy

Websocket 服务器进行握手并为连接创建一个套接字,然后返回侦听状态。

问题是,在客户端,websocket“onopen”事件永远不会被触发。就好像 IIS 没有将请求发送回浏览器一样。

任何帮助将不胜感激!

提前致谢!!

【问题讨论】:

    标签: c# websocket reverse-proxy


    【解决方案1】:

    这是因为 IIS 7 不知道 websockets 并且无法代理它。然而,它会将初始请求转发到您的 websockets 服务器,因为对 websocket 服务器的初始请求是标准 HTTP 请求(带有一些额外的标头)。 IIS 将知道这一点并简单地转发请求。但是,在收到 websocket 请求后,websocket 服务器将发送 101 响应并切换到 websocket 模式。 IIS 无法理解 websocket 流量,也无法代理它。

    IIS 8 将原生支持 websockets(支持将包含在 .NET 4.5 中),希望 Microsoft 也将添加对反向代理 websocket 流量的支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 2018-01-16
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多