2013-02-16 29 views
7

Tôi đang xem xét việc thực hiện cờ vua (cần websockets) với Rails và trong triển khai sản xuất sử dụng Nginx làm proxy ngược lại cho một loạt các quy trình Unicorn.Rails sử dụng Websockets với Nginx và Unicorn?

Trong suy nghĩ về làm thế nào để làm cho công việc đó dẫn tôi đến có các câu hỏi sau:

Theo như tôi hiểu WebSockets là một kết nối liên tục. Kể từ khi mọi thứ đi qua các proxy ngược Nginx như thế nào chính xác một quá trình công nhân Unicorn duy trì một kết nối websocket đến một trình duyệt của khách hàng? Nginx sẽ duy trì trạng thái về việc Unicorn xử lý mỗi websocket trình duyệt được kết nối và hoạt động như một loại trung gian? Việc giữ kết nối websocket liên tục trong quá trình Unicorn có chặn toàn bộ quy trình công nhân không?

Có cách nào được khuyến nghị để thực hiện cờ vua (với websockets) bằng Rails không?

+0

nginx không hỗ trợ websockets. –

+9

nginx hỗ trợ websockets kể từ phiên bản 1.3.13 – mak

+0

Cuối cùng bạn quyết định làm gì với user782220? – Morgan

Trả lời

-4

nginx sẽ không thực hiện các ổ cắm web. Bạn có chắc bạn không thể làm điều này với AJAX? Nếu bạn thực sự cần khả năng đẩy bạn có thể thử một cái gì đó xây dựng xung quanh cách tiếp cận Comet: http://en.wikipedia.org/wiki/Comet_(programming)

Faye là một viên ngọc khá tốt cho việc thực hiện sao chổi trong đường ray: http://faye.jcoglan.com/

1

Kết nối xử lý đồng bộ bởi Unicorn với giao không đồng bộ sử dụng nginx sẽ ngụ ý một số logic về phía nginx mà dường như ít nhất là khó xử với tôi. Nhiều nhất là không thể.

Có một Railscast về đá quý Private Pub sử dụng máy chủ web mỏng. Đó là cách phù hợp hơn cho nhiệm vụ này: nó không đồng bộ, nó có thể xử lý nhiều yêu cầu đồng thời với IO dựa trên sự kiện. Vì vậy, tôi đề nghị bạn thay thế Unicorn bằng Thin hoặc cài đặt Thin side-by-side.

Máy chủ web Puma cũng có thể là một tùy chọn, tuy nhiên, tôi không thể cung cấp thêm thông tin về điều đó.

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