2011-11-02 38 views
5

私は、.NET 4.0とソケットを使用してhybi-17仕様を使用してWebSocketチャットサーバーを構築しました。ブラウザがポート81のチャットサーバーに接続すると、すべて機能します。しかし、会社のファイアウォールなどのために - 私はポート80に接続するにはブラウザーにアクセスする必要があるので、世界中のすべてのPCにアクセスする必要があります。IIS 7リバースプロキシの背後にあるWebsocketサーバー

だから私はIIS 7 as a reverse proxyを使用しています。私はブラウザがIIS7のws://localhost/chatProxyに接続してから、WebSocketサーバーがリッスンしているhttp://localhost:81/chatProxyへの要求を代理するようになりました。

Websocketサーバーはハンドシェイクを行い、接続のためのソケットを作成してリスニング状態に戻ります。

問題は、クライアント側でwebsocketの "onopen"イベントがトリガされないことです。これは、IISがブラウザに要求を戻さない場合と同じです。

ご協力いただければ幸いです!

ありがとうございます!

答えて

7

これは、IIS 7がWebソケットを認識せず、プロキシできないためです。ただし、websocketサーバーへの最初のリクエストは標準のHTTPリクエスト(いくつかの追加ヘッダー付き)であるため、最初のリクエストをWebsocketサーバーに転送します。 IISはそのことを知り、単に要求を転送します。しかし、websocketリクエストを受信すると、websocketサーバは101レスポンスを送信し、websocketモードに切り替わります。 IISはwebsocketのトラフィックを認識せず、プロキシすることもできません。

IIS 8はネットワークソケットをサポートしています(サポートは.NET 4.5に含まれています)。また、リバースプロキシwebsocketトラフィックのサポートも追加されます。

+0

ああ男!ふりだしに戻る :) –

関連する問題