ruby-on-rails - 实时查看用户是否在线

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

我想检查用户此时是否在线。这应该显示在用户个人资料中。

我在我的 application_controller

中得到了这个
after_filter :user_activity

private

  def user_activity
    current_user.try :touch
  end

我在 user-model

中定义了这个
def online?
 updated_at > 10.minutes.ago
end

如果用户在线,我可以查看 View :(HAML)

- if @user.online?

这可行,但更新此信息总是需要重新加载页面。 它怎么能做成实时检查呢? 也许使用 ActionCable?

PS:使用设计

最佳答案

是的,Action Cable 可用于此。 Rails 指南在这里有(一半)这样的例子:Action Cable Overview -- 6.1 Example 1: User Appearance

基本上,您创建一个 AppearanceChannel 并且每个用户都订阅它。订阅调用 current_userappear 函数,然后可以广播出去(例如,向其他用户显示在线状态),通常通过像 这样的后台作业BroadcastAppearanceJob。 (我自己刚刚开始解决这个问题)。

关于ruby-on-rails - 实时查看用户是否在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458000/

相关文章:

ruby-on-rails - 我正在尝试在我的 Rails 应用程序的文件夹中创建一个新文件

ruby-on-rails - Rails 如何处理模型中的错误和异常

ruby-on-rails - 有没有办法修复 Elastic Beanstalk 中的 Gem::LoadError

ruby-on-rails - 在 Rails 中,如何删除数组中的所有对象?

ruby-on-rails - 有没有什么方法可以在不查询/少查询的情况下了解数据库更新?

html - 使用 capybara 查找表中的特定行

ruby-on-rails - 根据未过滤的请求参数生成URL

javascript - 如何使用 Flipclock.js 在 ruby​​ on Rails 中进行倒计时?

ruby-on-rails - ActionCable 超时 - Heroku 上的 "Idle Connection"

ruby-on-rails - websocket 握手期间的 Rails ActionCable 错误