laravel 在后台广播
laravel broadcasting in admin guard
在我的 laravel 网站上,我们有两个守卫 admin
和 customer
这个守卫的表格是 ->customer table
和 admin table
。
我想通过 laravel broadcasting
将通知从 customer
发送到 admin
这是我在 admin guard
的 .js 文件中的代码
server.js 个文件:
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
});
* i have a admin by id=2 *
Echo.private('App.Models.Admin.2')
.notification((notification) => {
console.log(notification.type);
});
并进入客服:
\Notification::send(Admin::find(2) , new SimpleAlert('hey bro'));
SimpleAlert.php:
public function toBroadcast($notifiable)
{
return new BroadcastMessage([
'message' => $this->message,
'type' => 'broadcast'
]);
}
所以,我启动 laravel-echo-server 并打开两个 google chrome 选项卡,一个用于 admin guard
,另一个用于 customer guard
and登录双守卫
控制台没有错误。 customer sending notification
没有错误,但是 `admin 没有收到通知。
问题:
laravel-echo-server 在我进入 admin guard
时显示这个
Client can not be authenticated, got HTTP status 403
请帮助我。
您可以做的是在routes/channels.php
中添加授权。试试这个
Broadcast::channel('App.Models.Admin.{userId}', function ($user, $userId) {
return $user->id === $userId;
});
这个答案对我不起作用。它不起作用的原因是因为您将预期的 ID ($userId) 与用户 table 上的经过身份验证的用户进行比较,而不是管理员 table。要在私人频道上向管理员发送消息,这对我有用:
在 routes/channels.php 中。
Broadcast::channel('App.Models.Admin.{userId}', function ($user, $userId) {
return auth()->guard('admin')->user()->id === $userId;
});
在我的 laravel 网站上,我们有两个守卫 admin
和 customer
这个守卫的表格是 ->customer table
和 admin table
。
我想通过 laravel broadcasting
将通知从 customer
发送到 admin
这是我在 admin guard
server.js 个文件:
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
});
* i have a admin by id=2 *
Echo.private('App.Models.Admin.2')
.notification((notification) => {
console.log(notification.type);
});
并进入客服:
\Notification::send(Admin::find(2) , new SimpleAlert('hey bro'));
SimpleAlert.php:
public function toBroadcast($notifiable)
{
return new BroadcastMessage([
'message' => $this->message,
'type' => 'broadcast'
]);
}
所以,我启动 laravel-echo-server 并打开两个 google chrome 选项卡,一个用于 admin guard
,另一个用于 customer guard
and登录双守卫
控制台没有错误。 customer sending notification
没有错误,但是 `admin 没有收到通知。
问题:
laravel-echo-server 在我进入 admin guard
Client can not be authenticated, got HTTP status 403
请帮助我。
您可以做的是在routes/channels.php
中添加授权。试试这个
Broadcast::channel('App.Models.Admin.{userId}', function ($user, $userId) {
return $user->id === $userId;
});
这个答案对我不起作用。它不起作用的原因是因为您将预期的 ID ($userId) 与用户 table 上的经过身份验证的用户进行比较,而不是管理员 table。要在私人频道上向管理员发送消息,这对我有用:
在 routes/channels.php 中。
Broadcast::channel('App.Models.Admin.{userId}', function ($user, $userId) {
return auth()->guard('admin')->user()->id === $userId;
});