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

5
我使用.NET 4.0和Sockets依据hybi-17规范搭建了一个WebSocket聊天服务器。如果浏览器连接到聊天服务器的81端口,一切都正常。但由于公司防火墙等原因 - 我需要浏览器连接到80端口,以使世界上的每台PC都能访问。
因此,我使用IIS 7作为反向代理。我已经成功让浏览器连接到IIS 7上的ws://localhost/chatProxy,然后代理请求到websocket服务器监听的http://localhost:81/chatProxy
WebSocket服务器进行握手并创建连接套接字,然后返回进入监听状态。
问题在于,在客户端,“onopen”事件从未触发。就好像IIS没有将请求发送回浏览器一样。
非常感谢您的帮助!!
1个回答

7
这是因为IIS 7不了解WebSockets,无法代理它。然而,它将把初始请求转发到您的WebSockets服务器,因为WebSocket服务器的初始请求是一个标准的HTTP请求(带有一些附加头)。 IIS会知道这一点并简单地转发请求。然而,收到WebSocket请求后,WebSocket服务器将发送101响应并切换到WebSocket模式。IIS将无法理解WebSocket流量,也无法代理它。
IIS 8将原生支持WebSockets(支持将包含在.NET 4.5中),希望微软还将添加支持反向代理WebSocket流量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接