我有这个代码:
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-rails或private_pub,但我想知道如何自己做.有没有办法集成EventMachine和Rails?也许我应该在另一个线程上运行EventMachine?