2011-11-02 90 views
5

我已經使用.NET 4.0和套接字使用hybi-17規範構建了一個WebSocket聊天服務器。如果瀏覽器連接到端口81上的聊天服務器,則所有功能都應如其所示。然而,由於公司的防火牆等 - 我需要瀏覽器連接到80端口,因爲這需要世界上每臺PC都可以訪問。在IIS 7反向代理背後的Websocket服務器

所以我使用IIS 7 as a reverse proxy。我設法讓瀏覽器連接到IIS 7上的ws://localhost/chatProxy,IIS 7然後代理請求到http://localhost:81/chatProxy websocket服務器正在偵聽。

Websocket服務器執行握手併爲連接創建套接字,然後返回到偵聽狀態。

問題是,在客戶端,websocket「onopen」事件從未觸發。就好像IIS不會將請求發送回瀏覽器一樣。

任何幫助將不勝感激!

在此先感謝!

回答

7

這是因爲IIS 7不知道websocket並且無法代理它。然而,它會將最初的請求轉發給你的websockets服務器,因爲對websocket服務器的初始請求是一個標準的HTTP請求(帶有一些額外的頭文件)。 IIS將知道這一點,並簡單地轉發請求。但是,一旦接收到websocket請求,websocket服務器將發送101響應並切換到websocket模式。 IIS將無法理解WebSocket流量,並且無法代理該流量。

IIS 8將本機支持websockets(支持將包含在.NET 4.5中),並且希望微軟也將增加對反向代理websocket流量的支持。

+0

啊!回到繪圖板 :) –

相關問題