在页面更改时检测取消订阅操作电缆

时间:2016-06-11 16:21:38

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

我正在Rails中构建聊天室类型系统,我需要检测用户何时离开服务器上的频道(即关闭页面),以便我可以更新活动用户列表。我在GitHub上搜索了文档和示例,似乎无法找到答案。

我过去曾使用过SignalR,它触发了一个断开事件,但我找不到Rails 5中的等价物(如果确实存在)。

我可以在频道类中看到带有未订阅方法的示例,但无论是导航到新页面还是完全关闭浏览器,都不会触发此操作。

编辑:不确定这是否有帮助,但我没有使用turbolinks。

2 个答案:

答案 0 :(得分:1)

这是Rails 5的beta 2的一个问题。我已经在最新版本 - beta 4中尝试了它,它现在按预期触发。

这里有github问题供参考:https://github.com/rails/rails/pull/23715

答案 1 :(得分:0)

试试这个

App.chatroom.disconnected()
=> yourChannel stopped streaming from chatroom #rails terminal

App.chatroom = App.cable.subscriptions.create({channel: 
     'yourChannel'}, {

     disconnected: function () {
       App.cable.subscriptions.remove(this)
       this.perform('unsubscribed') #in the channel have a method 'unsubscibed' to update users
     },
 )}