IIS 7反向代理后的Websocket服务器

本文关键字:Websocket 服务器 代理 IIS | 更新日期: 2023-09-27 18:13:22

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

所以我使用IIS 7作为反向代理。我已经设法让浏览器连接到IIS 7上的ws://localhost/chatProxy,然后将请求代理到http://localhost:81/chatProxy,其中websocket服务器正在侦听。

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

问题是,在客户端,websocket的"onopen"事件永远不会被触发。这就好像IIS不把请求发送回浏览器。

任何帮助将非常感激!!

提前感谢!!

IIS 7反向代理后的Websocket服务器

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

IIS 8将原生支持websocket(支持将包含在。net 4.5中),希望微软也能增加对反向代理websocket流量的支持。