我正在学习Ruby on Rails,在Heroku上使用WebSockets构建一个实时Web应用程序,但我无法弄清楚为什么在Unicorn服务器上运行时websocket连接失败.我将我的Rails应用程序配置为使用Procfile在本地和Heroku上运行Unicorn ...
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
Run Code Online (Sandbox Code Playgroud)
...我从当地开始$foreman start.在javascript中在客户端上创建websocket连接时发生故障...
var dispatcher = new WebSocketRails('0.0.0.0:3000/websocket'); //I update the URL before pushing to Heroku
Run Code Online (Sandbox Code Playgroud)
...在Chrome Javascript控制台中出现以下错误, 'websocket connection to ws://0.0.0.0:3000/websocket' failed. Connection closed before receiving a handshake response.
...当我在Heroku上的Unicorn上运行它时,我在Chrome Javascript控制台中收到了类似的错误, 'websocket connection to ws://myapp.herokuapp.com/websocket' failed. Error during websocket handshake. Unexpected response code: 500.
Heroku日志中的堆栈跟踪说, RuntimeError (eventmachine not initialized: evma_install_oneshot_timer):
奇怪的是,当我使用该命令在Thin服务器上本地运行它时,它工作正常$rails s.
我花了最近五个小时在线研究这个问题并没有找到解决方案.任何解决这个问题的想法,甚至是从我的工具中获取更多信息的想法,都将不胜感激!