gpt4 book ai didi

ruby-on-rails - 如何将 ActionCable broadcast_to 用于特定用户组?

转载 作者:行者123 更新时间:2023-12-04 10:07:00 25 4
gpt4 key购买 nike

我有一个带有 rails API + devise_token_auth + actionable 和 angular9 应用程序的基本设置。

我基本上想向特定的用户组而不是所有用户发送通知。

我的代码如下所示:

连接.rb

module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user

def connect
self.current_user = find_verified_user
end

private
def find_verified_user
uid = request.query_parameters[:uid]
token = request.query_parameters[:token]
client_id = request.query_parameters[:client]

user = User.find_by_uid(uid)

if user && user.valid_token?(token, client_id)
user
else
reject_unauthorized_connection
end
end
end
end

约会.rb
class Appointment < ApplicationRecord
validates_uniqueness_of :start_time
belongs_to :slug
belongs_to :user
belongs_to :property
belongs_to :contact


after_create do
ChangeAppointmentsJob.perform_later self
end

after_update do
ChangeAppointmentsJob.perform_later self
end
end

更改约会工作
class ChangeAppointmentsJob < ApplicationJob
queue_as :default

def perform(appointment)

ActionCable.server.broadcast 'appointment_channel', data: appointment
end

end

预约 channel
class AppointmentChannel < ApplicationCable::Channel
def subscribed
stream_from 'appointment_channel'
end

def unsubscribed
stop_all_streams
end
end

我想做这样的事情
ActionCable.server.broadcast_to( User.where(slug_id: current_user.slug_id) ) 

向我的 Front 应用程序发送通知,但 不是所有用户 , 只是具有 slug_id 的用户,如创建或更新约会的用户

任何想法,请!

最佳答案

我找到了解决方案

我将 slug_id 与 uid、access_token 和客户端一起发送以订阅 channel ,并在 connection.rb 中像这样使用它

module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user

def connect
self.current_user = find_verified_user
end

private
def find_verified_user
uid = request.query_parameters[:uid]
token = request.query_parameters[:token]
client_id = request.query_parameters[:client]
slug_id = request.query_parameters[:slug_id]
user = User.where(slug_id: slug_id).find_by_uid(uid) <-------- get all users with the same slug_id :)

if user && user.valid_token?(token, client_id)
user
else
reject_unauthorized_connection
end
end
end
end

关于ruby-on-rails - 如何将 ActionCable broadcast_to 用于特定用户组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61534901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com