繁体   English   中英

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

[英]Websocket Server Behind IIS 7 Reverse Proxy

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM