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
bạn đã bao giờ giải quyết vấn đề này? – jay
@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
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