【问题标题】:websocket-rails Enabling Synchronization on Heroku failswebsocket-rails 在 Heroku 上启用同步失败
【发布时间】:2015-02-02 21:05:41
【问题描述】:

我正在使用 Websocket-rails、sidekiq、redis、骨干网。

#config/initializers/websocket_rails.rb
WebsocketRails.setup do |config|
  config.standalone = false
  config.synchronize = true  # <= problem
  uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://127.0.0.1")
  config.redis_options = {:host => uri.host, :port => uri.port || 6379}
end

当我在 localhost 上使用这个初始化程序时,它运行良好。当我把它推到heroku时:

$ heroku ps
=== web (1X): `bundle exec rails server -p $PORT`
web.1: crashed 2014/12/04 20:40:35 (~ 28m ago)

如果我创建 config.synchronize = false ,它不会在 heroku 和 localhost 上崩溃,但 websockets 不再起作用。

附加信息:

#config/initializers/redis.rb
uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://127.0.0.1")
$redis = Redis.new(:host => uri.host, :port => uri.port || 6379, :password => uri.password, :driver => :hiredis)

#config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
  config.redis = {driver: :hiredis}
end

#config/events.rb  -> clear (this file not exist)


#app/assets/javascripts/application.js
...
//= require websocket_rails/main
//= require_tree .
var dispatcher = new WebSocketRails(window.document.location.host + '/websocket');
var channel = dispatcher.subscribe('channel_name');

尝试了我在谷歌 stackOverflow 上找到的所有内容。还没有尝试使其独立。 有什么建议?我只需要以某种方式让这个 websockets 在 heroku 上工作,并且通过许多测试,只有当同步设置为 true 时才会出错。

【问题讨论】:

    标签: ruby-on-rails heroku websocket redis sidekiq


    【解决方案1】:

    酷,我一直在搜索,找到了新示例 http://tgib23.github.io/blog/2014/10/30/deploy-rails-websocket-app-into-heroku/ 并将我的 websocket 更改为:

    config/initializers/websocket_rails.rb

    WebsocketRails.setup do |config|
      config.standalone = false
      config.synchronize = true  # <= problem
      uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://127.0.0.1")
      config.redis_options = {:host => uri.host, :port => uri.port || 6379, :user => 'redistogo', :password => 'xxxxxxxxxxxxxxxxxxxx'}
    }
    end
    

    我登录到 heroku,检查 redistogo 广告,获取编码密码,将其复制到此处的密码中,如示例所示,我很惊讶 - 它有效! :)

    【讨论】:

    • 嘿,mansim,我想知道您使用的是频道还是 UserManager。 wiki 给出了一个使用通道在同步模式下发送消息的示例。我尝试通过 WebsocketRails.users[user_id].send_message 使用 UserManager,但它一直在控制台中抛出 local variable or method 'sync' not defined 错误。
    • 嗯,不,我不是用它来发送消息的。也许你在这里找到答案ezdev.org/view/websocket-rails/4177
    猜你喜欢
    • 2012-03-15
    • 2018-09-19
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多