【问题标题】:On publish getting multiple same requests pubnubv4 rails在发布时获得多个相同的请求 pubnubv4 rails
【发布时间】:2016-08-08 14:01:43
【问题描述】:

我有一个使用 pub-nub v4 的基于 API 的 Rails 应用程序。使用 pub-nub 的客户端(IOS/Android)也是如此。

以下是我们正在执行的步骤:

1) 在创建任何对象时,我们订阅了两个频道并创建了一个 listener.here。同时在客户端,我们根据此对象 ID 订阅了两个频道。

2) 因此,对于任何从 IOS 端发布的相同通道,都会在 Web 端创建多个请求。因此将创建多个 DB 条目。

这里是订阅和退订的代码示例。

$pubnub.add_listener("broadcast_#{broadcast.id.to_s}")

$pubnub.subscribe("broadcast_#{broadcast.id.to_s},broadcastLikes_#{broadcast.id.to_s}") 


$pubnub.publish("broadcast_#{self.id.to_s}", { type: "StopBroadcast", text: text })
$pubnub.remove_listener("broadcast_#{self.id.to_s}")
$pubnub.unsubscribe("broadcast_#{self.id.to_s}, broadcastLikes_#{self.id.to_s}")

任何人都可以帮助我!

【问题讨论】:

  • 为什么要从 Rails 服务器订阅?如果您需要将消息从客户端发送到服务器,为什么不直接发布它们呢?您通过从您的服务器订阅所做的一切就是取代传统的网络应用程序 POST,这并没有真正提供任何优势。您应该使用 PubNub 的部分是另一个方向:服务器到客户端。
  • @CraigConover 这里add_listener的作用是什么?subscribe和add_listener是什么关系?因为没有add_listener我无法追踪subscribed的回调,所以紧急通知我。跨度>
  • 请提供任何示例,我们如何处理名称是动态生成的多个侦听器。
  • 监听器用于所有频道订阅响应和状态。您对多个听众的要求是什么?
  • @CraigConover 非常感谢您的帮助。我很清楚我的所有疑问,但将来如果我需要的话会问你。:)

标签: android ios ruby-on-rails ruby-on-rails-4 pubnub


【解决方案1】:

来自 cmets 的答案集合:

如果您需要将消息从客户端发送到服务器,为什么不直接 POST 呢?您通过从您的服务器订阅所做的一切就是取代传统的网络应用程序 POST,这并没有真正提供任何优势。您应该使用 PubNub 的部分是另一个方向:服务器到客户端。

问: add_listener 在这里的作用是什么? subscribe和add_listener是什么关系?

答:监听器用于所有频道订阅的响应和状态。 您只需为所有通道创建一个全局(应用程序级别)侦听器。当您订阅频道时,发布到该频道的消息将到达侦听器。当您取消订阅某个频道时,您将不再收到发布到该频道的消息。您可以订阅许多频道,因此您可以根据需要控制您订阅(收听)的频道。退订所有频道后,您将不会再收到消息。

问: 我怀疑一个全局监听器是否能够同时处理多个消息,有没有机会错过。我们是否应该删除这个监听器?如果是,那么什么时候?而且根据新的 ruby​​ PubNub v4,它没有显示有关侦听器的更多详细信息,这就是为什么会感到困惑。

答:单监听器设计模式不会遗漏任何消息。当前不支持多个侦听器(至少不是开箱即用的),但这就是我对多个侦听器要求感兴趣的原因。但只要知道单个/全局侦听器将接收发布到您的应用订阅的所有频道的所有消息。

问: 那么移除监听器呢,我们需要这样做吗?如果是,那么什么时候。如果没有,那会有什么问题吗?根据多个侦听器的要求,我们可以将每个侦听器与其自己的事件侦听分开,这样可以减少单个全局侦听器的负载。这是为了防止多个回调请求同时触发同一个回调。

答: 你不需要做 removeListener,真的。但是,如果您没有在应用程序中使用 PubNub,您可以调用它来清理一点内存(虽然很少)。我向您保证,您可以毫无问题地使用单个侦听器。它不会超载。侦听器是多线程/线程安全的,否则 PubNub 将根本无法工作(或以理想的方式)。

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    相关资源
    最近更新 更多