Row*_*yri 2 notifications laravel pusher
在我的laravel应用中,我想使用Pusher向特定用户发送通知。
我将此代码放在我的方法中:
$pusher = App::make('pusher');
$pusher->trigger( 'notification-channel',
'notification-event',
array('text' => 'this is a notification'));
return view('home');
Run Code Online (Sandbox Code Playgroud)
并将其放在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);
});
Run Code Online (Sandbox Code Playgroud)
但这会使通知显示给任何用户。这还存在另一个问题,即用户应该只在主页上才能接收通知!
因此,我该怎么做才能将通知发送给特定用户,并使该用户从任何页面接收该通知?
为了使用户能够从任何页面接收该代码,请在您的任何页面中放入您的Pusher代码layout.blade.php。或所有页面将扩展的任何其他文件。
若要将其分配给特定用户,您可以通过将用户ID附加到类似
'notification-channel:' . $user->id
Run Code Online (Sandbox Code Playgroud)
因此,在布局文件中,您可以收听该频道
var user = <?php echo $user ; ?>;
var channel = pusher.subscribe('notification-channel:' + user.id);
Run Code Online (Sandbox Code Playgroud)
尽管只有使用该功能的用户才能收到通知,但您的通知仍保持公开状态。意味着任何人都可以操纵其ID并接收其他人的通知。如果您想要私人通知,则可以按照以下说明进行操作:https : //laravel.com/docs/5.4/broadcasting#authorizing-channels