如何用设计检测在线用户

时间:2018-01-21 13:08:33

标签: ruby-on-rails-5

我在rails 5.1.4中使用设计,我希望随时随地向用户显示或发送通知,或者该用户从一开始就不在线。如何检测在线用户?我的设计scop也是用户。

1 个答案:

答案 0 :(得分:0)

使用websockets(actioncable)并订阅用户到频道。如果他们已登录,您可以找到他们的任何信息。如果需要,我可以向您发送代码示例。 更新:

应用程序/信道/ messages_channel.rb

class MessagesChannel < ApplicationCable::Channel
  def subscribed
    unless current_user.blank?
        stream_from "messages_auth_users"
    end
  end
end

资产/ JS /信道/ messages.coffee

//= require action_cable
@App = {}
App.cable = ActionCable.createConsumer('/cable')

$(window).ready ->
  App.messages = App.cable.subscriptions.create({
      channel: 'MessagesChannel'
    },
    received: (data) ->
      console.log ('!!!!!');
      $('.no_messages').remove()
    renderMessage: (data) ->
      $('.message-div').html(data.text)
  )
  return

和控制器或作业中的某个地方将数据发送到websocket

ActionCable.server.broadcast "messages_authuser",
  text: 'Your text here',
  time: Time.now, any_another_nash: 'value'