检查给定频道的ActionCable订阅是否已在JS使用者端进行检查的方法?

问题描述

我想在模式打开时添加消费者订阅,因为只有在这种情况下,我才需要接收一些频道消息。我知道我可以使用 consumer.subscriptions 列出订阅,并且返回一个标识符数组,但是是否有任何js方法来检查给定的频道是否已经订阅,等等。像 consumer.isSubscribed('FooChannel')吗?

解决方法

仅当模式已打开时,才可以创建预订,并避免不必要的检查。另外,您可以利用subscriptions#findAll来实现isSubscribed方法

consumer.subscriptions.isSubscribed = function (channelID) {
  return this.findAll(channelID).length > 0
}

findAll is defined here