我正在使用 websocket-rails gem 来处理我的应用程序的消息传递服务。
Tech Stack : Rails 4.2.5
, Ruby 2.3.0p0
, Passenger
as app-server (Also try with Puma
), Thin
as websocket server on port 3001
, ngnix
as web server and Websocket patch ofgem 'websocket-rails', github: 'moaa/websocket-rails', branch: 'sync_fixes'
当客户端点击 websocket 服务器时,它会主动触发服务器事件,client_connected
我可以在websocket_rails_server.log
打印的消息中看到,即
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
"+++++++++++ WebsocketRails Client CONNECTED ++++++++++++++"
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
但是,在客户端它突然以响应结束:
WebSocket connection to 'ws://beta.server.com/websocket' failed: Error during WebSocket handshake: Unexpected response code: 504
我已经尝试过有关 Github 问题以及 Stackoverflow 相关问题的所有解决方案,但还没有帮助。
我的 nginx 配置如下(如果需要的话):
server {
listen 80;
server_name beta.server.com;
root /var/www/server-rails/current/public;
proxy_cache_bypass 1;
proxy_no_cache 1;
location /websocket {
proxy_pass http://localhost:3001/websocket;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
add_header Access-Control-Allow-Origin *;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
passenger_enabled on;
passenger_sticky_sessions on;
passenger_app_env staging;
}