2011-11-02 66 views
5

Tôi đã xây dựng một máy chủ trò chuyện WebSocket sử dụng thông số hybi-17 sử dụng .NET 4.0 và Sockets. Nếu trình duyệt kết nối với máy chủ trò chuyện trên cổng 81, mọi thứ sẽ hoạt động bình thường. Tuy nhiên do tường lửa của công ty vv - Tôi cần trình duyệt để kết nối với cổng 80 vì điều này cần phải có thể truy cập được đối với mọi PC trên thế giới.Máy chủ Websocket Đằng sau IIS 7 Proxy ngược

Vì vậy, tôi đang sử dụng IIS 7 as a reverse proxy. Tôi đã quản lý để trình duyệt kết nối với ws://localhost/chatProxy trên IIS 7, sau đó ủy quyền yêu cầu tới http://localhost:81/chatProxy nơi máy chủ websocket đang nghe.

Máy chủ Websocket thực hiện thao tác bắt tay và tạo ổ cắm cho kết nối, sau đó quay trở lại trạng thái nghe.

Vấn đề ở phía khách hàng, sự kiện "onopen" websocket không bao giờ được kích hoạt. Nó giống như IIS không gửi yêu cầu trở lại trình duyệt.

Bất kỳ trợ giúp nào sẽ được đánh giá cao !!

Cảm ơn trước !!

Trả lời

7

Điều này là do IIS 7 không biết về websockets và không thể ủy quyền nó. Tuy nhiên, nó sẽ chuyển tiếp yêu cầu ban đầu đến máy chủ websockets của bạn vì yêu cầu ban đầu tới máy chủ websocket là một yêu cầu HTTP tiêu chuẩn (với một số tiêu đề bổ sung). IIS sẽ biết về điều đó và đơn giản là chuyển tiếp yêu cầu. Tuy nhiên, khi nhận được yêu cầu websocket, máy chủ websocket sẽ gửi một phản hồi 101 và chuyển sang chế độ websocket. IIS sẽ không hiểu lưu lượng websocket và sẽ không thể ủy quyền điều đó.

IIS 8 sẽ hỗ trợ websockets (hỗ trợ sẽ được bao gồm trong .NET 4.5) và hy vọng Microsoft cũng sẽ thêm hỗ trợ để đảo ngược lưu lượng truy cập web proxy.

+0

người đàn ông ah! trở lại với bản vẽ :) –

Các vấn đề liên quan