我关注Ryan Bates教程ActionController Live,并在heroku部署应用程序。所有工作都很好,除了事件,瑞安伤心,我们应该重新打开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。
答案 0 :(得分:0)
替换这个:
REDIS.psubscribe
用这个:
{{1}}
你拥有的任何地方' redis'上面,用REDIS global替换。