Tag: 发布 订阅

Rails pub / sub with faye

在Rails应用程序中,我使用Faye(机架适配器)进行推送通知(用于聊天)。 我想将Faye用于另一个用例(更多推送通知),但我似乎无法弄明白。 在我的应用程序中,可以从后台作业创建模型,因此我想在创建模型时刷新我的一个视图(比如索引操作)。 像这样: 应用程序/模型/ post.rb class Post include Mongoid::Document after_create :notify_subscribers private def notify_subscribers Faye::Client.publish(“/posts”) end end 应用程序/视图/职位/ index.html.erb uhh what do I do here? ajax call to refresh the whole page?? 那么直接从after_create回调发布通知是一个好主意,当我从Faye服务器收到消息时,如何实现“更新”? 我是否只是进行AJAX调用以从服务器重新加载数据? 这似乎很慢。 此外,我想使用类似的东西来更新模型(比如说用户添加了一些评论或者作者改变了内容)所以一直颠覆数据库似乎不是一个好的计划……

ActionController :: LIve是否可以检查连接是否仍然存在?

我正在尝试使用Rails 4的直播流实现文本/事件流。 它工作得很好,我遇到的唯一麻烦就是我无法在不发送任何消息的情况下检查连接是否存在。 我想出的唯一解决方案是使用循环刻度生成器创建支持通道,以便某些后台任务将定期发送消息。 但它似乎是凌乱和不可靠的。 更好的解决方案? 这是我的控制器: require ‘persistency/sse’ require ‘persistency/track’ class PersistencyController message }, :event => channel) end end rescue IOError ensure track.close sse.close end end end

Redis pub / sub on rails

关注Redis Pub / Sub 这工作正常,我可以使用任何类发布消息 $redis.publish ‘channel’, { object: @object.id } 使用redis-cli > MONITOR ,我可以validation此请求是否已正确发布 [0 127.0.0.1:64192] “publish” “channel” “{:object=>\”5331d541f4eec77185000003\” }” 当我在其他类(监听器类)中向该通道添加订户块时,问题就开始了,如下所示 class OtherClass $redis.subscribe(‘channel’) do |payload| p payload end end 在redis-cli > MONITOR ,还显示侦听器已正确订阅 [0 127.0.0.1:52930] “subscribe” “channel” 问题是,当我将订阅者监听器类添加到相同的rails应用程序时……它停止工作,因为OtherClass监听redis服务器并停止执行任何其他代码……它只是坐在那里听。 那么有没有办法在相同的rails应用程序上使用redis创建消息传递总线…以便从某些类或服务对象发布事件,并且有特定通道的侦听器在后台接收事件时采取行动。 我知道我可能会使用sidekiq或任何其他背景工作者来完成这项工作……但过了一段时间后,后台工作人员变得混乱而且无法维护。

发布/订阅REST-HTTP简单协议Web服务体系结构?

我问你对“建筑”场景的看法: 我正在寻找一个最简单的发布/订阅架构,让我们在互联网上讨论两个分离的服务器,共享“稀疏”但“实时”的消息/事件。 让我解释: PUBLISHER:是一个生成某种事件的服务器( http://www.server.com )(通过电子商务网站上的例如events == ORDERS数据)。 订阅者(一个或多个):“客户”是否可以订阅以接收ORDERS事件( http://www.client.com )。 在现实生活中,发布者是由第三方开发的服务器(在Rails中)。 目前我可以通过简单的“轮询”策略将“订单”与其接口:每N秒我调用一次GET / new_orders。 坏! 所以我正在考虑使用REST方法更好的pub / sub架构,其中Publisher共享EVENTS资源: 客户订阅接收事件,向发布者提供将来要调用的“URL HOOK”(例如: http : //www.client.com/orders )。 发布者,当有新事件(==订单)时,只需将HTTP POST数据发送到客户端之前提供的客户端URL挂钩。 合理 ? 或者我正在重新发明轮子? 顺便说一句,我用Ruby语言开发,我知道pub / sub消息系统就像Faye。 但是你怎么看待这个简单的协议(我想简单地使用Ruby / Sinatra实现客户端)? (见图1 ) 任何建议欢迎。 非常感谢 乔治

如何找出与ActionCable连接的人?

我见过ActionCable.server.open_connections_statistics , ActionCable.server.connections.length , ActionCable.server.connections.map(&:statistics) , ActionCable.server.connections.select(&:beat).count等等,不过这个只是“每个进程”(服务器,控制台,服务器工作者等)。 我如何找到目前订阅ActionCable的所有人 ? 这应该在每个环境(开发,登台,生产)中的任何Rails进程上返回相同的值。 例如,在开发控制台中,您还可以看到开发服务器上的连接,因为理论上它们使用相同的订阅适配器(redis,async,postgres)。 Rails 5.0.0.beta3,Ruby 2.3.0 相关的ActionCable – 如何显示已连接用户的数量?