2014-04-29 43 views
6

Tôi có ứng dụng Rails 3.2 với gem websocket-rails 0.7.Websocket-rails không hoạt động trên môi trường sản xuất với Nginx và Unicorn

Trên máy tính phát triển, tất cả hoạt động tốt

On môi trường sản xuất, tôi sử dụng Nginx/1,6 như máy chủ proxy và Unicorn như máy chủ http. Thin được sử dụng ở chế độ độc lập (theo sau https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode).

nginx config:

location /websocket { 
    proxy_pass http://localhost:3001/websocket; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
} 

Về phía backend, tôi đã đoạn mã sau để gửi thông báo cho các khách hàng

WebsocketRails[:callback_requests].trigger 'new', call_request 

Về phía khách hàng, tôi nhận được một kết nối sử dụng:

dispatcher = new WebSocketRails window.location.host + ':3001/websocket' 
channel = dispatcher.subscribe 'callback_requests' 

Nhưng thông báo không đến với khách hàng.

vấn đề liên quan trên github - github.com/websocket-rails/websocket-rails/issues/211

+0

bạn đã bao giờ giải quyết vấn đề này? – jay

+0

@jay Tôi đã có thể giải quyết vấn đề này thông qua việc sử dụng máy chủ http chung chung, không có kỳ lân. Nhưng đối với kỳ lân + mỏng (đối với websocket) + nginx Tôi đã không tìm thấy một giải pháp – MaxKonin

+0

Cổng nào bạn đang chạy Nginx? Mã máy khách của bạn đang gọi 3001, nhưng sau đó bạn cũng đang ủy nhiệm 3001. Nginx và Thin không thể có cả hai được phục vụ 3001 trên cùng một máy chủ. – toxaq

Trả lời

5

nginx cấu hình của bạn được phù hợp với các yêu cầu dưới đây /websocket/ với trailing /. Đó là thành phần thư mục của /websocket/blah.

Nếu bạn nhìn vào tệp nhật ký truy cập nginx, bạn sẽ thấy yêu cầu của mình tới /websocket đang được chuyển hướng 301 đến /websocket/.

Tháo trailing /

location /websocket { 
    proxy_pass http://localhost:3001/websocket; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
} 
+0

Tôi đã thử nó. Nó không giúp tôi ... – MaxKonin

+0

Điều gì được ghi vào nginx và nhật ký truy cập mỏng khi có yêu cầu? – Matt

+0

Bạn có thể xem tất cả thông tin trong https://github.com/websocket-rails/websocket-rails/issues/211 – MaxKonin

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