Laravel websockets と Echo を使用して、簡単なライブ チャットを作成します。しかし、私には理解できないことがあります。
私は2つのサーバーを持っています:
- Laravel Echo を使用した Laravel アプリケーション (チャット フロントエンド)
- Laravel websocket がインストールされた Laravel サーバー。
ユーザーがメッセージを送信すると、ポスト リクエストがサーバー 1 に送信されます。サーバー 1 は、送信メッセージ イベントをソケット サーバー (サーバー 2) にディスパッチします。
event(new NewMessage($channel, $message));
その間、チャットはソケット サーバーをリッスンしています。
Echo.channel(channel).listen('NewMessage', (data) => {
console.log(data.question)
})
これはすべて正常に機能し、私が読んだドキュメントによると、これが進むべき道です。私が抱えている問題は、メッセージを送信するための投稿リクエストがまったく不要だと感じていることです。メッセージをデータベースなどに保存しません。したがって、ポスト リクエストが行うことは、メッセージをサーバーに送信することだけであり、サーバーはメッセージを次のサーバーに送信します。そのため、送信されるすべてのメッセージに対して不要な投稿リクエストが発生します。
ドキュメントでは、彼らは Laravel echo Whisper について何か言及しています。これは、「誰かが入力している」種類の更新を送信するために使用します。
.whisper('typing', {
name: "me"
});
メッセージを聞くには:
.listenForWhisper('typing', (e) => {
console.log(e.name);
});
これを使用してメッセージを送信するのは賢明でしょうか? または、投稿リクエストをバイパスする他の方法はありますか?