向特定用户发送推送通知-Laravel

向特定用户发送推送通知-Laravel,laravel,notifications,pusher,Laravel,Notifications,Pusher,在我的laravel应用程序中,我想使用Pusher向特定用户发送通知 我将此代码放在我的方法中: $pusher = App::make('pusher'); $pusher->trigger( 'notification-channel', 'notification-event', array('text' => 'this is a notification')); return view('ho

在我的laravel应用程序中,我想使用Pusher向特定用户发送通知

我将此代码放在我的方法中:

$pusher = App::make('pusher');

$pusher->trigger( 'notification-channel',
                  'notification-event', 
                   array('text' => 'this is a notification'));

return view('home');
并将其放在home.blade.php中:

<script src="//js.pusher.com/3.0/pusher.min.js"></script>
<script>

    var pusher = new Pusher("{{env("PUSHER_KEY")}}");
    var channel = pusher.subscribe('notification-channel');
    channel.bind('notification-event', function(data) {
      alert(data.text);
    });

var pusher=新的pusher({{env(“pusher_KEY”)});
var channel=pusher.subscribe('notification-channel');
channel.bind('notification-event',函数(数据){
警报(data.text);
});

但这会使通知显示给任何用户。 这还存在另一个问题,即用户应仅在主页上接收通知


那么,我应该如何向特定用户发送通知,并让用户从任何页面接收通知???

要让用户从任何页面接收通知,请将推送程序代码放入
layout.blade.php
中(如果有)。或所有页面将扩展的任何其他文件

要将其发送给特定用户,您可以通过将用户id附加到频道来使用它,如

'notification-channel:' . $user->id
因此,在布局文件中,您将收听该频道

var user = <?php echo $user ; ?>;
var channel = pusher.subscribe('notification-channel:' + user.id);
var user=;
var channel=pusher.subscribe('notification-channel:'+user.id);

虽然只有具有该easy的用户可能会收到通知,但您的通知仍然是公开的。这意味着任何人都可以操纵自己的id并接收其他人的通知。如果您想要私人通知,可以按照此处的说明进行操作:

尝试此操作,我得到了以下错误:Pusher.php第257行中的pushereException:无效通道名称通知通道:22@eddycedovemy bad,尝试用点替换冒号。所以它变成了“通知频道”$用户->id频道命名约定不允许“:”字符。因此,我通过将通道名称更改为“通知通道-”修复了此错误$user->id@eddythedove是的,我注意到了。这就是为什么我建议用点来代替。然而,在使用Laravel5.4时,我使用冒号作为通道。像
user:update
等等……无论您使用什么,都可以通过
Auth::user()
或简单地将其从控制器传递到视图,以任何方式获取用户。实际上,您并不需要用户本身。您可以只传递一个带有用户id的变量。就像在控制器中一样,您可以
返回视图('viewname',['userid'=>1])