2013-04-04 36 views
13

Tôi đang đọc lên trên SockJS node server. Tài liệu cho biết:Có vấn đề gì khi sử dụng WebSockets với proxy và cân bằng tải?

Thường thì WebSockets không phát độc đáo với proxy và cân bằng tải. Triển khai một máy chủ SockJS phía sau Nginx hoặc Apache có thể gây đau đớn. May mắn thay các phiên bản gần đây của một cân bằng tải tuyệt vời HAProxy có thể kết nối WebSocket proxy. Chúng tôi đề xuất đặt HAProxy làm cân bằng tải dòng trước và sử dụng nó để phân chia lưu lượng truy cập SockJS từ dữ liệu HTTP bình thường.

Tôi tò mò liệu có ai có thể mở rộng vấn đề đang được HAProxy giải quyết trong trường hợp này không? Cụ thể:

  1. Tại sao ổ cắm web không hoạt động tốt với proxy và cân bằng tải?
  2. Tại sao triển khai máy chủ Sockjs phía sau Apache là đau khổ?

Trả lời

16

1. Tại sao ổ cắm web không hoạt động tốt với proxy và cân bằng tải?

Tôi khuyên bạn nên đọc bài viết này trên How HTML5 Web Sockets Interact With Proxy Servers bởi Peter Lubbers. Nó sẽ bao gồm tất cả mọi thứ bạn cần biết về WebSocket và proxy - và do đó, cân bằng tải.

2. Tại sao triển khai máy chủ Sockjs phía sau Apache là đau đớn?

a module for handling WebSocket connections nhưng hiện nay Apache không natively hỗ trợ WebSocket, cũng không giống như bất cứ lúc nào sẽ sớm dựa trên lỗi này nộp vào apache - HTML5 Websocket implementation. Đề nghị là nó thực sự phù hợp với mô hình mô-đun tốt hơn.

Vì vậy, nó "đau" chỉ đơn giản là vì nó không dễ dàng - không có hỗ trợ chính thức và do đó nó không có sử dụng cộng đồng mà nó có thể có.

Cũng có thể có các cơn đau khác trong SockJS có các giao thức dự phòng dựa trên HTTP. Vì vậy, bạn cần phải ủy quyền cả hai kết nối WebSocket (sử dụng mô-đun apache-websocket) và cũng yêu cầu HTTP khi dự phòng được sử dụng.

Liên quan đến điều này: Nginx v1.3 was released vào tháng 2 với hỗ trợ WebSocket.

+0

Cảm ơn bạn, bài viết của Peter Lumbbers rất thông tin. Ngoài ra, tất cả mọi người chạy Apache và sử dụng ổ cắm Web đều phải cài đặt mô-đun apache-websocket mà bạn tham khảo? Mô-đun này có bắt buộc nếu bạn đang sử dụng các thư viện như socket.io hoặc sockjs không? –

+0

Bạn không phải cài đặt mô-đun, không. Bạn có thể chạy cơ sở hạ tầng thời gian thực của mình song song với ngăn xếp web chuẩn của mình. Vì vậy, với socket.Io/sockjs - không, mô-đun là không cần thiết. – leggetter

+0

Ồ đúng vậy, vì socket.io và sockjs đang sử dụng các máy chủ chạy trên node.js không phải trên Apache. –

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