Heim  >  Artikel  >  PHP-Framework  >  Laravel-Entwicklung: Wie kann man Laravel Broadcasting verwenden, um WebSockets-Kommunikation zu implementieren?

Laravel-Entwicklung: Wie kann man Laravel Broadcasting verwenden, um WebSockets-Kommunikation zu implementieren?

PHPz
PHPzOriginal
2023-06-13 23:13:461431Durchsuche

Laravel ist ein leistungsstarkes PHP-Framework. Seine weit verbreitete Verwendung und elegante Syntax machen es zu einem der bevorzugten Frameworks für die PHP-Entwicklung. Bei der Webentwicklung ist Echtzeitkommunikation für viele Anwendungen von entscheidender Bedeutung. In Laravel sind Websockets eine gängige Methode zur Echtzeitkommunikation. Laravel Broadcasting ist ein gängiges Tool zur einfachen Implementierung der WebSockets-Kommunikation. In diesem Artikel werde ich vorstellen, wie man Laravel Broadcasting zur Implementierung der WebSockets-Kommunikation verwendet.

  1. Implementieren von Laravel Broadcasting

In Laravel müssen Sie eine Art Broadcast-Treiber wie Pusher oder Redis verwenden, um Laravel Broadcasting zu implementieren. Zuvor müssen Sie einige notwendige Pakete mit Composer installieren, wie zum Beispiel:

composer require predis/predis pusher/pusher-php-server guzzlehttp/guzzle

Diese Pakete werden für die Übertragung mit Pusher oder Redis verwendet.

  1. Pusher für die Übertragung verwenden

Um Pusher für die Übertragung zu verwenden, müssen Sie das Pusher-Abhängigkeitspaket in Laravel einführen und Pusher-bezogene Umgebungsvariablen in der Datei .env festlegen. Setzen Sie nach der Installation von Pusher die Option pusher in der Broadcast-Datei /config/broadcasting.php auf true. Als nächstes können wir den folgenden Code zum Senden verwenden: .env文件中设置Pusher相关的环境变量。安装Pusher后,在广播文件/config/broadcasting.php中,将pusher选项设置为true。接下来,我们可以使用以下代码来进行广播:

use IlluminateSupportFacadesBroadcast;
Broadcast::channel('chat.{roomId}', function ($user, $roomId) {
     return true;
});

在这个例子中,Broadcast::channel方法表示只有在room聊天中的用户才能收到广播。这是Laravel Broadcasting使用Pusher的基本方法。

  1. 使用Redis进行广播

使用Redis进行广播与使用Pusher类似。在Laravel中,需要在.env文件中设置Redis相关的环境变量。接着,在广播文件/config/broadcasting.php中,将redis选项设置为true并配置redis相关的参数。

在广播文件中,有一个PresenceChannel类,当一个用户连接到频道时,在redis中保存用户信息,例如用户名和ID。可以使用以下代码来实现这个功能:

Broadcast::channel('chat.{roomId}', function ($user, $roomId) {
    return [
        'id' => $user->id,
        'name' => $user->name
    ];
});

以上代码表示为,在chat房间内的用户中,向redis发送JSON数据。它包含一个id和用户名的键值对,让其他用户知道是谁正在房间内。

  1. 在前端使用Laravel Broadcasting

现在我们已经在Laravel中实现了广播,接下来我们需要在前端中使用广播功能。在Laravel中,可以使用Laravel Echo来轻松实现这个功能。Laravel Echo是一个用于在应用程序和websocket服务器之间传输数据的库。可以使用以下代码将Laravel Echo添加到应用程序中:

import Echo from 'laravel-echo';
window.Echo = new Echo({
 broadcaster: 'pusher',
 key: process.env.MIX_PUSHER_APP_KEY,
 cluster: process.env.MIX_PUSHER_APP_CLUSTER,
 encrypted: true
});

在以上代码中,我们使用Pusher作为广播驱动,设置了Pusher相关的参数,然后需要在前端代码中使用Laravel Echo监听广播事件。例如:

Echo.channel(`chat.${roomId}`)
    .listen('NewMessage', (e) => {
        console.log(e);
});

以上代码表示为,当有新的消息时,在控制台中输出消息内容。我们需要在NewMessagerrreee

In diesem Beispiel bedeutet die Methode Broadcast::channel, dass nur Benutzer im Raumchat die Übertragung empfangen können. Dies ist die grundlegende Möglichkeit, Pusher mit Laravel Broadcasting zu verwenden.

    Redis für die Übertragung verwenden

    🎜Die Verwendung von Redis für die Übertragung ähnelt der Verwendung von Pusher. In Laravel müssen Redis-bezogene Umgebungsvariablen in der Datei .env festgelegt werden. Als nächstes setzen Sie in der Broadcast-Datei /config/broadcasting.php die Option redis auf true und konfigurieren Redis-bezogene Parameter. 🎜🎜In der Broadcast-Datei gibt es eine Klasse PresenceChannel, die Benutzerinformationen wie Benutzername und ID in Redis speichert, wenn ein Benutzer eine Verbindung zum Kanal herstellt. Sie können den folgenden Code verwenden, um diese Funktion zu implementieren: 🎜rrreee🎜Der obige Code wird so ausgedrückt, dass JSON-Daten an Redis zwischen Benutzern im Chatroom gesendet werden. Es enthält ein Schlüssel-Wert-Paar aus ID und Benutzername, um anderen Benutzern mitzuteilen, wer sich im Raum befindet. 🎜
      🎜Verwendung von Laravel Broadcasting im Front-End🎜🎜🎜Da wir nun Broadcasting in Laravel implementiert haben, müssen wir als nächstes die Broadcast-Funktion im Front-End verwenden. In Laravel können Sie Laravel Echo verwenden, um diese Funktionalität einfach zu implementieren. Laravel Echo ist eine Bibliothek zum Übertragen von Daten zwischen Anwendungen und Websocket-Servern. Laravel Echo kann mit dem folgenden Code zur Anwendung hinzugefügt werden: 🎜rrreee🎜Im obigen Code verwenden wir Pusher als Broadcast-Treiber, legen Pusher-bezogene Parameter fest und müssen dann Laravel Echo im Front-End-Code zum Abhören verwenden für Rundfunkveranstaltungen. Zum Beispiel: 🎜rrreee🎜Der obige Code wird so ausgedrückt, dass bei einer neuen Nachricht der Nachrichteninhalt in der Konsole ausgegeben wird. Wir müssen die Logik des Empfangs von Broadcast-Nachrichten im NewMessage-Ereignis implementieren. So implementieren Sie die WebSockets-Kommunikation mit Laravel Broadcasting. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel haben wir vorgestellt, wie man Laravel Broadcasting zur Implementierung der WebSockets-Kommunikation verwendet. Bevor wir Laravel Broadcasting implementieren, müssen wir zunächst die erforderlichen Bibliotheken und Pakete installieren und dann den Pusher- oder Redis-Treiber zum Senden verwenden. Verwenden Sie abschließend Laravel Echo im Frontend, um auf Broadcast-Ereignisse zu warten. Ich hoffe, dieser Artikel kann Ihnen helfen zu verstehen, wie Sie die WebSockets-Kommunikation mithilfe von Laravel Broadcasting implementieren. 🎜

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie kann man Laravel Broadcasting verwenden, um WebSockets-Kommunikation zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn