如果要在Heroku上使用websocket-rails的话,就需要使用Redis

简而言之

因为在尝试将websocket-rails的示例应用部署到Heroku上时遇到了问题,所以记录下来。可能不仅仅是针对websocket问题,而是普遍存在的现象。

Ruby 2.2.2, Rails 4.2.6, WebSocket-Rails 0.7.0 712fd4e 的版本。

(首先)结论

在本地环境下正常运行是前提条件
以下内容与参考网址所述相同

1. 启用 Redis
heroku addons:add redistogo

请确认Redis的连接地址和密码。
进入Heroku仪表盘,找到您的应用程序页面,点击“Add-ons”,然后选择“Redis To Go”。
在General选项卡中,将以下内容写入:
redis://redistogo:“密码”@“Redis的URL”:“端口”

在WebSocket Rails中为Redis提供连接地址
vim config/initializers/websocket_rails.rb
config.redis_options = {:host => ‘Redis的URL’, :port => ‘端口’, :user => ‘redistogo’, :password => ‘密码’}
(这里,用户名为’redistogo’固定不变)

将Dispatcher的URL从本地主机更改为在Heroku上发布自己应用程序的URL(不是Redis的URL):
var ws_rails = new WebSocketRails(“自己应用的URL/websocket”);

请看以下内容

一些技术讨论:将Rails Websocket应用程序部署到Heroku上。

备忘录1

由于对Heroku的配置还不是很了解,因此以下内容包含猜测。

根据Heroku 开发中心的解释,为什么需要在Heroku上安装Redis,原因是一个应用程序可能会被划分为多个dyno,如果出现这种情况,不同的dyno之间无法直接通信。
虽然在免费使用模式下限制只有一个dyno,但不论怎样,没有使用Redis是无法正常运行的。

备考2

以前的文章中使用的websocket示例,似乎是基于上述参考网址。

广告
将在 10 秒后关闭
bannerAds