Heim > Artikel > PHP-Framework > WebSockets-Entwicklung mit Laravel: eine Lösung für Echtzeitkommunikation
WebSockets-Entwicklung mit Laravel: Eine Lösung für Echtzeitkommunikation
Zitat:
Mit der Weiterentwicklung von Webanwendungen wird Echtzeitkommunikation immer wichtiger. Das traditionelle HTTP-Request-Response-Modell schränkt die Echtzeitfähigkeit von Anwendungen ein, weshalb man begann, nach neuen Lösungen zu suchen. Es entstand die WebSockets-Technologie, die eine Möglichkeit bietet, eine dauerhafte Verbindung zwischen dem Client und dem Server herzustellen, wodurch die Funktion der Echtzeitkommunikation realisiert werden kann. In diesem Artikel wird erläutert, wie Sie mit dem Laravel-Framework auf einfache Weise Echtzeit-Kommunikationsanwendungen auf Basis von WebSockets entwickeln können.
Was sind WebSockets?
WebSocket ist ein Kommunikationsprotokoll, das eine bidirektionale dauerhafte Verbindung zwischen einem Client und einem Server herstellt. Im Gegensatz zum herkömmlichen HTTP-Request-Response-Modell ermöglicht WebSocket dem Server und dem Client den Datenaustausch in Echtzeit. Die WebSocket-Kommunikation erfolgt vollduplex, was bedeutet, dass Server und Client gleichzeitig Daten senden und empfangen können.
Warum Laravel wählen?
Laravel ist ein beliebtes PHP-Entwicklungsframework, das viele leistungsstarke Funktionen und Tools bietet, um die Erstellung von Webanwendungen einfacher und effizienter zu machen. Das Laravel-Framework bietet gute Unterstützung für Echtzeitkommunikation und die Erweiterungspakete Laravel Echo und Laravel WebSockets machen die Entwicklung von WebSockets-basierten Anwendungen einfach und unkompliziert.
Beginnen Sie mit der Verwendung von Laravel WebSockets:
Zuerst müssen wir das Laravel WebSockets-Erweiterungspaket installieren. Führen Sie den folgenden Befehl im Terminal aus:
composer require beyondcode/laravel-websockets
Nach Abschluss der Installation führen Sie den folgenden Befehl aus, um die Konfigurationsdatei zu veröffentlichen:
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"
Als nächstes müssen wir die WebSockets-bezogene Datenbankmigrationsdatei generieren:
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations" php artisan migrate
Configure Laravel WebSockets :
Öffnen Sie die Laravel-Konfigurationsdatei „config/websockets.php“. Wir können einige WebSockets-bezogene Konfigurationsoptionen festlegen, z. B. Abhöradresse und -port, Authentifizierung und Autorisierung usw.
Ereignisse erstellen:
In Laravel verwenden wir Ereignisse, um die Echtzeitkommunikation abzuwickeln. Zuerst müssen wir eine Ereignisklasse erstellen. Führen Sie den folgenden Befehl aus, um eine Klasse mit dem Namen „NewMessage“-Ereignis zu erstellen:
php artisan make:event NewMessage
Öffnen Sie die neu erstellte Ereignisklasse „app/Events/NewMessage.php“, wir können einige Eigenschaften und Methoden für das Ereignis definieren. Beispielsweise können wir dem Ereignis eine Eigenschaft namens „message“ hinzufügen, die den Inhalt der Nachricht speichert, die wir senden möchten.
public $message; public function __construct($message) { $this->message = $message; }
Der nächste Schritt besteht darin, einen Event-Broadcaster zu erstellen. Führen Sie den folgenden Befehl aus, um eine Broadcaster-Klasse mit dem Namen „NewMessageBroadcast“ zu erstellen:
php artisan make:channel NewMessageBroadcast
Öffnen Sie die neu erstellte Broadcaster-Klasse „app/Broadcasting/NewMessageBroadcast.php“. Wir müssen eine Methode für den Broadcaster definieren, um die Übertragung von Ereignissen zu verarbeiten.
public function broadcastOn() { return new Channel('new-message'); } public function broadcastAs() { return 'message'; }
Konfigurieren Sie den Broadcast-Treiber:
Öffnen Sie die Laravel-Konfigurationsdatei „config/broadcasting.php“. Wir können den Typ des Broadcast-Treibers auf „Pusher“ festlegen und entsprechende Konfigurationsoptionen bereitstellen.
'pusher' => [ 'driver' => 'pusher', 'key' => env('PUSHER_APP_KEY'), 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ 'cluster' => env('PUSHER_APP_CLUSTER'), 'useTLS' => true, ], ],
Nachdem die Konfiguration abgeschlossen ist, können wir Pusher als unseren Broadcast-Treiber verwenden.
Verarbeiten von Ereignissen:
In unserer Anwendung können wir unser Ereignis im Controller oder Modell auslösen und es mithilfe der Broadcast-Klasse senden. Hier ist ein Beispiel:
use AppEventsNewMessage; use IlluminateHttpRequest; public function sendMessage(Request $request) { // 处理接收到的消息 $message = $request->input('message'); // 触发事件并广播 event(new NewMessage($message)); return response()->json(['message' => 'Message sent.']); }
Im obigen Code erhalten wir zunächst den Inhalt der Nachricht, die wir von der Anfrage erhalten haben. Anschließend lösen wir unser benutzerdefiniertes Ereignis „NewMessage“ mithilfe der Laravel-Ereignisklasse „event“ aus. Schließlich geben wir eine JSON-Antwort zurück, die angibt, dass die Nachricht gesendet wurde.
Sendung anhören:
Als nächstes müssen wir ein Front-End-Skript erstellen, das die Sendung anhört. Fügen Sie in Ihrem HTML-Code den folgenden Code ein:
<script src="https://cdn.jsdelivr.net/npm/laravel-echo@^1.10.0/dist/echo.min.js"></script> <script src="/js/app.js"></script> <script> // 与WebSockets服务器建立连接 const echo = new Echo({ broadcaster: 'pusher', key: 'your-pusher-key', cluster: 'your-pusher-cluster', encrypted: true, }); // 监听来自"new-message"频道的消息 echo.channel('new-message') .listen('.message', (message) => { console.log(message); }); </script>
Im obigen Code fügen wir zunächst Laravel Echo und unsere Front-End-JavaScript-Datei ein. Anschließend haben wir die Echo-Instanz mithilfe des zuvor konfigurierten Pusher-Schlüssels und der Cluster-Informationen initialisiert. Schließlich hören wir den Kanal namens „new-message“ mit der Methode „echo.channel()“ ab und verarbeiten Nachrichten vom Kanal mit der Methode „.listen()“.
Fazit:
Die Verwendung von Laravel für die WebSockets-Entwicklung ist eine ideale Lösung für die Echtzeitkommunikation. Die von Laravel bereitgestellten Erweiterungspakete Laravel Echo und Laravel WebSockets machen die Erstellung von WebSockets-basierten Anwendungen einfach und effizient. Wenn Sie die Schritte und den Beispielcode in diesem Artikel befolgen, können Sie schnell eine leistungsstarke Echtzeit-Kommunikationsanwendung erstellen. Ich wünsche Ihnen viel Erfolg bei Ihrem Entwicklungsprozess!
Das obige ist der detaillierte Inhalt vonWebSockets-Entwicklung mit Laravel: eine Lösung für Echtzeitkommunikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!