2017-03-26 12 views
2

私のlaravelアプリケーションで、Pusherを使用して特定のユーザーに通知を送信したいと考えています。特定のユーザーにプッシャー通知を送信する - Laravel

私は私の方法では、このコードを配置:

$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); 
    }); 

をしかし、この通知は、任意のユーザーに表示されるようになります。 これはまた、ユーザーが通知を受け取るためにホームページにだけあるべきであるという別の問題があります。

したがって、特定のユーザーに通知を送信し、ユーザーがページからそれを受け取れるようにするにはどうすればよいですか?

答えて

1

ユーザーが任意のページから受け取れるようにするには、プッシャーコードをlayout.blade.phpに入れてください。または、すべてのページが拡張するその他のファイル。

それは、特定のユーザーに行くようにするには、あなたが

'notification-channel:' . $user->id 

ようチャネルにそれを追加することによって、ユーザーIDを使用することができますので、あなたのレイアウトファイルで使用すると、そのチャンネルに耳を傾ける

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

その簡単なユーザーだけが通知を受け取るかもしれませんが、通知は公開されたままです。誰でも自分のIDを操作して他の誰かの通知を受け取ることができます。あなたはプライベートの通知をしたい場合は、ここでの指示に従うことができます:https://laravel.com/docs/5.4/broadcasting#authorizing-channels

+0

はこれをしようと、私はこのエラーを得た:Pusher.phpライン257で PusherException: 無効なチャンネル名通知チャンネル:22 @EddyTheDove –

+1

私の悪い、交換してみてくださいコロンはドットで表示されます。したがって、それは「通知チャネル」になります。 。 $ user-> id; ' – EddyTheDove

+0

チャンネル命名規則では、「:」文字は使用できません。そこで、チャンネル名を 'notification-channel-'に変更してこのエラーを修正しました。 $ user-> id @EddyTheDove –

関連する問題