【问题标题】:Cannot unsubscribe with PubNub无法取消订阅 PubNub
【发布时间】:2013-10-24 02:56:24
【问题描述】:

我正在使用 PubNub、Phonegap、Backbone.js 和 Require.js 来构建 twiiter 风格的聊天室。目前我正在使用 chrome 在桌面上进行测试。

我有一个 Chat.js 视图,在 initialize() 函数中,我通过以下方式订阅频道:

                that.pubnub.subscribe({
                  channel: chatChannel,
                  message: that.handleSingleMessage,
                });

这很好用,我可以通过 Chrome 检查器看到 ajax 请求已发送。在应用程序的顶部有一个“返回”按钮。在这里我调用 unsubscribe 来取消订阅用户:

        that.pubnub.unsubscribe({
            channel: chatChannel
          });

但是,我仍然看到 Chrome 检查器仍然发送到 PubNub 的 ajax 请求,即使用户应该取消订阅并且位于应用程序的不同部分。 2 ajax 请求被重复发送。它们看起来像:

http://ps13.pubnub.com/time/0?uuid=tomsmith&auth=&pnsdk=PubNub%2DTS%2DWeb%2F3%2Y5%2E1

http://ps11.pubnub.com/time/0?uuid=4ea9bd1c%2D7652%2D410c%2Da2ba%2D17c5d263085d&auth=&pnsdk=PubNub%2DTS%2DWeb%2F3%2Y5%2E1

知道发生了什么吗?

【问题讨论】:

    标签: pubnub


    【解决方案1】:
    http://ps13.pubnub.com/time/0?uuid=tomsmith&auth=&pnsdk=PubNub%2DTS%2DWeb%2F3%2Y5%2E1 
    

    只是“时间”调用。它们用于监控客户端的在线/离线状态,并不意味着您仍然订阅。把它们想象成“PubNub Pings”

    如果您仍然看到一个带有“订阅”的 URL,那么这意味着您仍然被订阅,例如:

    http://ps2.pubnub.com/subscribe/demo/demoapp1%2Cdemoapp1-pnpres/0/13825545216910725?uuid=2f62d1c1-69c8-423c-9492-74e29f46a877&pnsdk=PubNub-JS-Web%2F3.5.47
    

    但从您的示例看来,在您取消订阅后,它只是在此处执行心跳逻辑。

    杰瑞米

    【讨论】:

      【解决方案2】:

      请确保您在取消订阅后不会重新订阅同一个频道。如果 PubNub 失去连接,它会自动尝试重新连接到频道。您可以在此处查看我如何切换和取消订阅频道:http://plnkr.co/edit/7JyS4H

      【讨论】:

      • 谢谢,看起来非常有用的代码。您是否使用“restore: false”来执行此操作?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多