0

我遵循 Ryan Bates 教程 ActionController Live,并在 heroku 部署应用程序。一切正常,除了事件,Ryan 对我们应该重新打开 redis 连接感到难过,而我做不到。我使用 RedisToGo 在 heroku 上执行 redis。这是我的事件控制器操作:

def events
    response.headers["Content-Type"] = "text/event-stream"
    redis = Redis.new(:url => uri)
    redis.psubscribe('messages.*') do |on|
        on.pmessage do |pattern, event, data|
            response.stream.write("event: #{event}\n")
            response.stream.write("data: #{data}\n\n")
        end
    end
    rescue IOError
        logger.info "Stream closed"
    ensure
        redis.quit
        response.stream.close
end

这里还有redis初始化程序:

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:url => uri)

有人能帮我吗?

编辑

我只需使用初始化客户端Redis.new(url: ENV["REDISTOGO_URL"])而不是在事件控制器操作中解析 URI 即可完成所有工作。

4

1 回答 1

0

替换这个:

redis = Redis.new(:url => uri)
redis.psubscribe

有了这个:

REDIS.psubscribe

上面有“redis”的任何地方,用 REDIS 全局替换。

于 2016-05-15T18:59:25.093 回答