我在 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
WebSocket 服务器在我启动 rails 服务器时运行。它在开发环境中完美运行,但在测试服务器上不起作用,我在那里使用 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 服务器。