gpt4 book ai didi

ruby-on-rails - 聆听 Rails 中的 Juggernaut 事件

转载 作者:行者123 更新时间:2023-12-04 07:36:44 30 4
gpt4 key购买 nike

我正在使用 Juggernaut、Redis、SQLite 和 Rails 3.1 构建一个简单的实时聊天

我想在另一个用户断开连接时(例如他关闭了窗口)向每个用户写入一条新消息,这是为了监听 Juggernaut 的客户端断开连接事件。

Juggernaut docs说我可以在服务器端(Ruby)执行此操作

Juggernaut.subscribe do |event, data|
# Use event/data
end

问题是我不知道应该将此代码放在 Rails 应用程序中的哪个位置( Controller 、模型、观察者?)。我尝试将其放入模型中,但是服务器不会响应任何将该代码块放入模型中的请求。

我认为我应该从服务器端监听该事件,因为如果用户因关闭窗口而断开连接,那么我就没有该用户的“客户端”。

可能我遗漏了有关 Juggernaut 工作原理的一些信息。任何帮助将不胜感激。

最佳答案

好吧,我终于回答自己了:

我发现问题是,当正在运行的进程调用 Juggernaut.subscribe 时,它​​会卡住,直到触发 Juggernaut 事件。因此,您无法从服务器进程调用 Juggernaut,您需要一个新进程来运行该代码。

我的代码现在看起来像这样:型号:

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

因此,在为服务器提供午餐后,我需要为 Juggernaut 监听器提供午餐,如下所示:

./script/participations_listener

(请注意,您应该为脚本提供 +x)。

希望对某人有帮助!

关于ruby-on-rails - 聆听 Rails 中的 Juggernaut 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6955968/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com