我在rails 5.1.4中使用设计,我希望随时随地向用户显示或发送通知,或者该用户从一开始就不在线。如何检测在线用户?我的设计scop也是用户。
答案 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'