首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Heroku上的ActionController::Live(Rails4),发布/订阅(Redis)不工作

Heroku上的ActionController::Live(Rails4),发布/订阅(Redis)不工作
EN

Stack Overflow用户
提问于 2013-10-09 03:52:46
回答 1查看 571关注 0票数 1

我尝试在Heroku上使用ActionController::Live,Pub/Sub(Redis),但它不起作用。我使用的是Ruby2.0.0p247,Rails4,Puma。

我想像这样聊天。RailsCast( http://railscasts.com/episodes/401-actioncontroller-live?view=asciicast )、GitHub( https://github.com/railscasts/401-actioncontroller-live/tree/master/chatter-after )

我的代码是这样的。

beginner_messages_controller.rb

代码语言:javascript
运行
复制
class BeginnerMessagesController < ApplicationController

include ActionController::Live

def index
  @beginner_messages = BeginnerMessage.all.order("created_at DESC")

end

def create  
  response.headers["Content-Type"] = "text/javascript"
  attributes = params.require(:beginner_message).permit(:body)
  @beginner_message = BeginnerMessage.new(attributes)
  @beginner_message.user = current_user
  @beginner_message.save

  json_message = @beginner_message.to_json
  hash_result = JSON.parse(json_message)
  hash_result[:username] = @beginner_message.user.username
  hash_result[:created_at] = @beginner_message.created_at.strftime("%H:%M")
  @json_result = hash_result.to_json
  $redis.publish('beginner_messages.create', @json_result)
end

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

beginner_messages.js.coffee

代码语言:javascript
运行
复制
source = new EventSource('/beginner_messages/events')
source.addEventListener 'beginner_messages.create', (e) ->
  beginner_message = $.parseJSON(e.data)
  $('#chat').prepend($('<li>').text("#{beginner_message.username} $ #{beginner_message.body} #{beginner_message.created_at}").css("listStyleType","none"))

在本地主机上,它工作正常,但在Heroku上不起作用。彪马和雷迪斯正在研究Heroku。

我在网上找过了,但是没有帮助。请告诉我我应该做什么。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-01-15 11:14:31

很抱歉挂掉了一个旧的线程,但是任何其他有这个问题的人都可以在他们的终端上尝试一下:

$ heroku labs:enable websockets

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19257040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档