Laravel。每个用户有多个渠道或个人渠道?

时间:2019-10-22 02:28:27

标签: laravel websocket broadcasting

我正在Laravel中使用事件广播。 我正在使用基于角色的通知访问方式。我有用于广播的自定义身份验证防护。当用户连接到频道时,客户端会向服务器发送具有权限的access_token。服务器验证此access_token并允许连接(我使用3d派对服务Auth0来验证用户身份,这意味着用户每次连接到每个广播频道时,都需要花费一些时间来验证服务器端的令牌)。

我的应用中有多个要广播的事件。 我是否应该为每个用户创建多个私人渠道(每个事件一个),例如:

public function broadcastOn()
{
    $users_from_db = \App\NotificationUsers::where('permission',$this->permission)->get();
    foreach($users_from_db as $user){
        return new PrivateChannel('connections'.$user->id); 
    }

}
// Permission for each event is defined in each event class as private property.

然后在服务器端检查(在route / channels.php中为闭包)用户是否具有此通道的权限,并允许或禁止他连接到该通道。当事件触发时,在其broadcastOn中,我会执行以下操作:

window.Echo.private('singleChannel.'+user_id)
  .listen("Event1", (mes) => {
      console.log(mes);
})
window.Echo.private('singleChannel.'+user_id)
  .listen("Event2", (mes) => {
      console.log(mes);
})

因此,初次加载页面上的每个用户都尝试连接到多个渠道,如果允许,他将收到通知,不允许-不接收。

我应该创建一个频道:

lst <- lapply(1:ncol(mtcars), function(i){
  x <- mtcars[[i]]
  data.frame(
    Variable_name = colnames(mtcars)[[i]],
    sum_unique = NROW(unique(x)), 
    NA_count = sum(is.na(x)), 
    NA_percent = round(sum(is.na(x))/NROW(x),2))  
  })

do.call(rbind, lst)
#    Variable_name sum_unique NA_count NA_percent
# 1            mpg         25        0          0
# 2            cyl          3        0          0
# 3           disp         27        0          0
# 4             hp         22        0          0
# 5           drat         22        0          0
# 6             wt         29        0          0
# 7           qsec         30        0          0
# 8             vs          2        0          0
# 9             am          2        0          0
# 10          gear          3        0          0
# 11          carb          6        0          0

还是...其他任何变体? 什么是好习惯?

0 个答案:

没有答案