我在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吗?
更新 我在开发环境中使用thin。 在制作时我使用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服务器。