私はアプリのチャット/メッセージ機能に取り組んでいます。ユーザーがメッセージを送信すると、特定のイベントをトリガーしてブロードキャストする必要があります。私はその後、Laravel Echoが、イベントのブロードキャストチャンネルを、Laravel Echo経由で、pusher
ドライバを使ってイベントに聴かせたいと思っています。Laravelイベントがブロードキャストされていません
私は、Laravel Echoの実装をVueコンポーネントに入れ、そのイベントでブロードキャストされたデータを取得したいと考えています。現在、プライベートチャンネルまたはちょうどチャンネルに放送するイベントを取得できません。ここで
は、私がやっていることです:
1).env
に設定を追加しました。
2)bootstrap.js
に設定を追加しました:
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'mykey',
encypted: false
});
3)ユーザーは、今のところで署名されている場合(ただ)trueを返すApp\Providers\BroadcastServiceProvider
に認証チェックを追加しました:
Broadcast::channel('chat', function ($user) {
// verify that user is recipient of message
return \Auth::check();
});
4)にApp\Providers\BroadcastServiceProvider::class,
を追加しましたApp/config/app.php
。
5) chat
という名前でブロードキャストするイベントApp\Events\UserSentMessage
を作成しました。私もChannel
にブロードキャストしようとしました。私はチェックし、コントローラ内のevent()
ヘルパーへのコールからイベントが発せられていますが、ブロードキャストされていないようです。私はまた、コントローラのbroadcast
を使用してみました。
6)は予想通り(成分)だけLaravelエコー気圧で作業していない、データなどのレンダリングされた有効なVueのコンポーネントでmounted
Vueのライフサイクルフック内で次のを追加しました:
Echo.private('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
も試してみました:
Echo.channel('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
Vueコンポーネントは、指定されたチャネルに正常にサブスクライブしています。プッシャー・デバッグ・コンソールは、それがサブスクライブされていることを認識しましたが、トリガーされたイベントは決してブロードキャストされません。
イベントのブロードキャストに問題があるようです。私もevent()
ヘルパーではなく、broadcast()
ヘルパーを使ってみました。
また、Laravel Echoでイベントに登録するときは、Echo.private()
。チャンネル名の先頭にprivate
と表示されているようですので、(イベントで)private-chat
という名前のチャンネルへのブロードキャストも試みました。
(
pusher
を試してみてください)あなたの
.env
ファイル
をチェックして、
BROADCAST_DRIVER
が
log
ではないことを確認するためにあなたをお勧めすることができますし、また、キューリスナーを実行し続けることを忘れないでください
パーフェクト!どうもありがとうございました! – AshMenhennett