【问题标题】:Disconnect and unsubscribe Action Cable on Rails 6断开并取消订阅 Action Cable on Rails 6
【发布时间】:2020-05-19 21:11:48
【问题描述】:

这已经在这里问过了,但似乎旧方法(exampleexample)不再适用于 Rails 6,因为您不能在 app/javascript/channels/your_channel.js 中使用 App.channel。 不过,如果我错了,请纠正我,因为我是 Rails 新手。

我的问题是:如何在 Rails 6 上断开或/和取消订阅客户端?

我对“页面更改”场景特别感兴趣。

【问题讨论】:

    标签: ruby-on-rails actioncable ruby-on-rails-6


    【解决方案1】:

    根据您与我们分享的内容,我想您正在尝试删除订阅。您可以使用 consumer.subscriptions.remove [1] 将其删除。

    您能分享一下您在app/javascript/channels/your_channel.js 中的sn-p 代码吗?

    【讨论】:

      【解决方案2】:

      解决方案是将订阅保存在 this 变量上,如果在页面加载时此变量不为空,则执行删除调用,然后执行新订阅。

      // File: app/javascript/channels/your_channel.js
      import consumer from "./consumer";
      
      $(document).on('turbolinks:load', function() {
          if (this.subscription) {
              consumer.subscriptions.remove(this.subscription);
              console.log("unsubing");
          }
      
          if ($('#hashtag').attr('data-hashtag-id')) {
              var subscription = consumer.subscriptions.create({channel: "TweetsChannel", id: $('#hashtag').attr('data-hashtag-id')}, {
                  connected() {
                      console.log("we are live on: " + $('#hashtag').attr('data-hashtag-id'));
                  },
      
                  disconnected() {
                      console.log("disconecting")
                  },
      
                  received(data) {
                      $('#tweets-card').prepend(data.content)
                  }
              });
      
              this.subscription = subscription;
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2017-02-24
        • 1970-01-01
        • 2017-01-03
        • 2018-12-18
        • 2018-08-27
        • 2018-05-11
        • 1970-01-01
        • 2021-07-09
        • 2018-02-08
        相关资源
        最近更新 更多