[英]Listening to Juggernaut events from Rails
我正在使用Juggernaut,Redis,SQLite和Rails 3.1建立一个简单的实时聊天
当另一个用户已断开连接(例如,他关闭了窗口)时,我想向每个用户写一条新消息,这是在监听剑圣的客户端断开事件。
剑圣文档说我可以在服务器端做到这一点(Ruby)
Juggernaut.subscribe do |event, data|
# Use event/data
end
问题是我不知道将这段代码放在Rails应用程序的哪个位置(控制器,模型,观察者?)。 我试图将其放入模型中,但是服务器没有响应该模型中的那部分代码。
我认为我应该从服务器端监听该事件,因为如果用户由于关闭窗口而断开连接,则该用户没有“客户端”。
可能我缺少有关剑圣工作方式的一些信息。 任何帮助将不胜感激。
好的,最后我要回答自己:
我发现问题在于,当运行的进程调用Juggernaut.subscribe时,它会冻结,直到触发Juggernaut事件为止。 因此,您无法从服务器进程中调用Juggernaut,您需要一个新进程来运行该代码。
我的代码现在看起来像这样:Model:
class MyModel < ActiveRecord::Base
class << self
def subscribe
Juggernaut.subscribe do |event, data|
case event
when :subscribe
# do something
when :unsubscribe
# do something else
end
end
end
end
end
然后我有一个ruby脚本myapp / scripts / juggernaut_listener:
#!/usr/bin/env ruby
require File.expand_path('../../config/environment', __FILE__)
puts "Starting juggernaut listener"
MyModel.subscribe
因此,在对服务器进行午餐之后,我需要像这样对剑圣侦听器进行午餐:
./script/participations_listener
(注意,您应该给脚本加上+ x)。
希望对某人有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.