问题标签 [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.
ruby-on-rails-4 - Rails 4 + Websocket-rails + Passenger + Nginx + 负载均衡器
我已经为我们的几个需要 websocket-rails 的 web 应用程序添加了一些功能。在开发中一切正常,但我不确定如何在我们的生产环境中部署所有这些,因为它有点复杂。
生产设置:
- 1 台服务器用作负载均衡器 (Nginx)。
- 2 台服务器用作 Web 服务器,我们的 Rails 应用程序使用 Nginx 和Passenger 运行(两台服务器相同)。
- 应用服务器使用的其他几个服务器,但我相信它们与这个问题无关。
- 所有站点都在 HTTPS 上运行。
负载均衡器配置
这是其中一个站点的示例,其他站点具有类似的配置:
网络服务器配置
同样,这是其中一个站点的示例,其他站点具有类似的配置:
到目前为止我收集的内容:
- 我需要启用乘客粘性会话
- 我需要在 websocket 服务器正在侦听
location
的站点部分中创建一个。server
- 我需要将乘客对 websocket 位置的并发请求覆盖为无限制。
我的问题:
- 我是否还必须在负载均衡器的配置中启用乘客粘性会话?我猜这仅适用于网络服务器。
- websocket 服务器的
location
部分会是什么样子? - 我是否
location
还必须在负载均衡器上创建 websocket 部分? - 拥有粘性会话就足以使各种应用程序和服务器保持同步?
- 我在每台服务器上运行了各种应用程序,它们都应该收到相同的通知(套接字消息),所以它们都应该连接到同一个 websocket 服务器(我猜)。现在 websocket-rails 是他们 gemsets 的一部分,每个应用程序不会尝试生成自己的 websocket 服务器吗?如果是这样,我该如何防止这种情况并让它们只产生一个以防万一还没有运行?
如您所见,我对 websocket-rails 如何在生产中与乘客和 nginx 一起工作感到非常困惑,因此即使您没有所有答案,也非常感谢任何输入!
更新
我在负载均衡器上尝试了以下操作:
在应用服务器上:
在客户端,我连接到 url WebSocketRails('www.example.com/websocket');
,我收到以下错误:
有任何想法吗?
ruby-on-rails - Websocket Rails | 504 响应 | 连接突然结束
我正在使用 websocket-rails gem 来处理我的应用程序的消息传递服务。
Tech Stack : Rails 4.2.5
, Ruby 2.3.0p0
, Passenger
as app-server (Also try with Puma
), Thin
as websocket server on port 3001
, ngnix
as 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 配置如下(如果需要的话):
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:
ruby-on-rails - Rails websocket 连接ID存储
我搜索了Web socket rails gem,但无法确定通道的连接 ID 是存储在 redis 服务器上还是存储在 rails 内存中。任何人都知道它的存储位置。
基本上,我们希望通过添加更多实例来扩展我们的服务器,这就是我们要确保用户的连接 ID 或通道和连接 ID 的映射存储在 redis 上而不是 rails 应用程序服务器上的原因。