【问题标题】:Deploying Thin with Websockets使用 Websocket 部署 Thin
【发布时间】:2014-12-29 15:06:50
【问题描述】:

我正在尝试部署一个通过 Thin 提供服务的 Ruby on Rails 应用程序。该应用程序使用 websockets,特别是 websocket-rails 库。

这在本地有效。尝试部署时,它不起作用。 websocket 服务器不是独立的应用程序 - websockets 只是主应用程序服务器的一部分。当我的 javascript 创建到网络服务器的连接时,我在 production.log 中看到以下内容:

[2014-11-02T23:38:19.942236 #9154]  INFO -- : Started GET "/websocket" for <IP ADDRESS> at 2014-11-02 23:38:19 +0000

production.log 中没有其他与 websocket 请求相关的内容。在我的 websocket_rails.log 中,我看到:

[32mConnectionManager^[[0m] Connection opened: #<Connection::b2b0d6b0e3faa4432b0c>
[32mConnectionManager^[[0m] Connection closed: #<Connection::b2b0d6b0e3faa4432b0c>

显示请求确实到达了websocket代码,并且连接被及时关闭。在浏览器中,我看到了

WebSocket connection to 'ws:/<DOMAIN>/websocket' failed: Error during WebSocket handshake:  Unexpected response code: 200

我发现有关此错误的信息非常有限。有没有一种简单的方法来调试这些错误?在 Chrome Inspector 中检查数据显示对 /websocket 的请求如下:

我想我错过了一个简单的配置,但必须发现它可能是什么。有什么想法吗?

谢谢!

【问题讨论】:

  • 你用的是 nginx 吗?也许那里发生了某种配置问题。如果您是:stackoverflow.com/questions/15992145/…,这个问题可能会有所帮助
  • 我正在使用 nginx,但我没有设置反向代理。 websockets 不是独立的,它们是基础应用程序的一部分。不过,我将进一步研究我的 nginx 配置。谢谢。
  • 我还使用 nginx 作为代理来使用 websocket-rails 进行瘦身,我必须为 websocket 添加一个条目。

标签: ruby-on-rails websocket thin


【解决方案1】:

我在本地机器上运行了一台瘦服务器来运行应用程序,但在我部署到生产环境时它无法正常工作。我不得不在 Heroku 上设置一个单独的应用程序来运行一个单独的服务器。也许这对你有用?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2012-05-07
    • 2018-01-13
    • 2019-06-09
    相关资源
    最近更新 更多