gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:02:13 24 4
gpt4 key购买 nike

我已经使用 .NET 4.0 和套接字使用 hybi-17 规范构建了一个 WebSocket 聊天服务器。如果浏览器连接到端口 81 上的聊天服务器,一切都会正常运行。然而,由于公司防火墙等原因——我需要浏览器连接到端口 80,因为这需要世界上每台 PC 都可以访问。

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

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

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

任何帮助将不胜感激!!

提前致谢!

最佳答案

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

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

关于c# - IIS 7 反向代理背后的 Websocket 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com