Rails アプリケーションでem-websocket gemを使用しています。WebSocket サーバーは初期化子で実行されます。これは次のようになります。
#config/initializers/web_socket.rb
EM.next_tick do
EM::WebSocket.run(host: '0.0.0.0', port: 8080) do |ws|
ws.onopen do |request|
...
end
ws.onclose do
...
end
end
end
Railsサーバーを起動すると、WebSocketサーバーが実行されます。開発環境では完璧に動作しますが、テスト サーバーでは動作しません。そこで Nginx と Passenger を使用します。
Passenger と Nginx で WebSockets をセットアップする方法を知っている人はいますか?
更新: 私は開発環境でシンを使用しています。本番環境では Nginx と Passenger を使用していますが、これらのツールの設定は通常です。ログにエラー メッセージはありません。ブラウザ コンソールに次のエラーがあります。
Failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
Nginx の設定:
worker_processes 1;
events {
worker_connections 1024;
}
http {
passenger_root /usr/local/rvm/gems/ruby-2.2.2/gems/passenger-5.0.7;
passenger_ruby /usr/local/rvm/gems/ruby-2.2.2/wrappers/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name example.com;
passenger_enabled on;
rails_env production;
root /var/www/domains/example.com/www/deployments/current/public;
}
}
通常のUbuntuサーバーを使用しています。