在页面更改时检测取消订阅 Action Cable
Detect unsubscribe from Action Cable on page change
我正在 Rails 中构建一个聊天室类型的系统,我需要检测用户何时离开服务器上的频道(即关闭页面),以便我可以更新活跃用户列表。我搜索了 GitHub 上的文档和示例,但似乎找不到答案。
我过去使用过 SignalR,它会触发断开连接事件,但我在 Rails 5.
中找不到等效项(如果确实存在的话)
我可以在频道 class 中看到带有取消订阅方法的示例,但是无论我导航到新页面还是完全关闭浏览器,都不会触发此方法。
编辑:不确定这是否有帮助,但我没有使用 turbolinks。
这是 Rails 5 的 beta 2 的问题。我已经在最新版本 - beta 4 中尝试过它,现在它已按预期触发。
这里是 github 问题供参考:https://github.com/rails/rails/pull/23715
试试这个
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
},
)}
我正在 Rails 中构建一个聊天室类型的系统,我需要检测用户何时离开服务器上的频道(即关闭页面),以便我可以更新活跃用户列表。我搜索了 GitHub 上的文档和示例,但似乎找不到答案。
我过去使用过 SignalR,它会触发断开连接事件,但我在 Rails 5.
中找不到等效项(如果确实存在的话)我可以在频道 class 中看到带有取消订阅方法的示例,但是无论我导航到新页面还是完全关闭浏览器,都不会触发此方法。
编辑:不确定这是否有帮助,但我没有使用 turbolinks。
这是 Rails 5 的 beta 2 的问题。我已经在最新版本 - beta 4 中尝试过它,现在它已按预期触发。
这里是 github 问题供参考:https://github.com/rails/rails/pull/23715
试试这个
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
},
)}