问题标签 [websocket-rails]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
625 浏览

ruby-on-rails-4 - Rails 4 + Websocket-rails + Passenger + Nginx + 负载均衡器

我已经为我们的几个需要 websocket-rails 的 web 应用程序添加了一些功能。在开发中一切正常,但我不确定如何在我们的生产环境中部署所有这些,因为它有点复杂。

生产设置:

  • 1 台服务器用作负载均衡器 (Nginx)。
  • 2 台服务器用作 Web 服务器,我们的 Rails 应用程序使用 Nginx 和Passenger 运行(两台服务器相同)。
  • 应用服务器使用的其他几个服务器,但我相信它们与这个问题无关。
  • 所有站点都在 HTTPS 上运行。

负载均衡器配置

这是其中一个站点的示例,其他站点具有类似的配置:

网络服务器配置

同样,这是其中一个站点的示例,其他站点具有类似的配置:

到目前为止我收集的内容:

我的问题:

  • 我是否还必须在负载均衡器的配置中启用乘客粘性会话?我猜这仅适用于网络服务器。
  • websocket 服务器的location部分会是什么样子?
  • 我是否location还必须在负载均衡器上创建 websocket 部分?
  • 拥有粘性会话就足以使各种应用程序和服务器保持同步?
  • 我在每台服务器上运行了各种应用程序,它们都应该收到相同的通知(套接字消息),所以它们都应该连接到同一个 websocket 服务器(我猜)。现在 websocket-rails 是他们 gemsets 的一部分,每个应用程序不会尝试生成自己的 websocket 服务器吗?如果是这样,我该如何防止这种情况并让它们只产生一个以防万一还没有运行?

如您所见,我对 websocket-rails 如何在生产中与乘客和 nginx 一起工作感到非常困惑,因此即使您没有所有答案,也非常感谢任何输入!

更新

我在负载均衡器上尝试了以下操作:

在应用服务器上:

在客户端,我连接到 url WebSocketRails('www.example.com/websocket');,我收到以下错误:

有任何想法吗?

0 投票
0 回答
337 浏览

ruby-on-rails - Websocket Rails | 504 响应 | 连接突然结束

我正在使用 websocket-rails gem 来处理我的应用程序的消息传递服务。

Tech Stack : Rails 4.2.5, Ruby 2.3.0p0, Passengeras app-server (Also try with Puma), Thinas websocket server on port 3001, ngnixas web server and Websocket patch ofgem 'websocket-rails', github: 'moaa/websocket-rails', branch: 'sync_fixes'

当客户端点击 websocket 服务器时,它会主动触发服务器事件,client_connected我可以在websocket_rails_server.log打印的消息中看到,即

但是,在客户端它突然以响应结束:

我已经尝试过有关 Github 问题以及 Stackoverflow 相关问题的所有解决方案,但还没有帮助。

我的 nginx 配置如下(如果需要的话):

0 投票
1 回答
119 浏览

ruby-on-rails - Websocket controller not being auto loaded in Rails dev environment

So I've been having this problem for sometime since I started working with the websocket-rails gem. Apparently it can't autoload my 'broadcast controller' and is preventing me from running rails commands on the command line.

I used to get around this be commenting out the events file and getting things to load. Its honestly a crapshoot, sometimes it works sometimes it doesn't but lately I havn't been getting it to work, I've been trying to debugg this for a while but honestly I'm stuck.

This only happens in development.

Anyone have any ideas?

Here is the error stack:

this is what /Users/matt/Documents/sdcc_grp_buy/app/controllers/broadcasts_controller.rb looks like:

and this is what my events.rb file looks like:

Gemfile:

development.rb:

0 投票
1 回答
62 浏览

ruby-on-rails - Rails websocket 连接ID存储

我搜索了Web socket rails gem,但无法确定通道的连接 ID 是存储在 redis 服务器上还是存储在 rails 内存中。任何人都知道它的存储位置。

基本上,我们希望通过添加更多实例来扩展我们的服务器,这就是我们要确保用户的连接 ID 或通道和连接 ID 的映射存储在 redis 上而不是 rails 应用程序服务器上的原因。