相关疑难解决方法(0)

如何从Rails控制器推送到Faye Server?

我有这个代码:

def create
    message = Message.new(text: params[:message][:text], author: params[:message][:author])
    if message.save
      render json: {result: 'success'}
    else
      render json: {result: 'failure'}
    end
  end
Run Code Online (Sandbox Code Playgroud)

我有客户订阅了Faye Server:

var subscription = client.subscribe('/foo', function (message) {
    getMessages();
});
Run Code Online (Sandbox Code Playgroud)

我想在创建消息时向Faye发布一些消息.如Faye Ruby Sever文档中所列,我必须这样做:

require 'eventmachine'

EM.run {
  client = Faye::Client.new('http://localhost:9292/faye')

  client.subscribe('/foo') do |message|
    puts message.inspect
  end

  client.publish('/foo', 'text' => 'Hello world')
}
Run Code Online (Sandbox Code Playgroud)

但是当我将此代码粘贴到我的create方法中时,它会使用EventMachine阻止rails线程,并且服务器不再起作用.

当我client.publish没有使用时EventMachine,我收到错误.

如何从服务器发布到Faye?我知道有宝石喜欢faye-railsprivate_pub,但我想知道如何自己做.有没有办法集成EventMachine和Rails?也许我应该在另一个线程上运行EventMachine?

ruby ruby-on-rails eventmachine faye

1
推荐指数
1
解决办法
2335
查看次数

标签 统计

eventmachine ×1

faye ×1

ruby ×1

ruby-on-rails ×1