Heute werden wir das Konzept des Rundfunks im Laravel -Web -Framework untersuchen. Sie können Benachrichtigungen an die Client -Seite senden, wenn etwas auf der Serverseite passiert. In diesem Artikel werden wir die Drittanbieter-Pusher-Bibliothek verwenden, um Benachrichtigungen an die Client-Seite zu senden. Wenn Benutzer A nun eine Nachricht an Benutzer B sendet, möchten Sie Benutzer B in Echtzeit benachrichtigen. Sie können ein Popup oder ein Alert-Box anzeigen, das Benutzer B über die neue Nachricht informiert! Lassen Sie uns den Grundfluss von Steckdosen verstehen, bevor wir tiefer in die tatsächliche Implementierung eintauchen. Letztere bevorzugen wir in diesem Artikel. Auf der Serverseite informieren wir, wenn ein bestimmtes Ereignis stattfindet, den Web-Socket-Server, indem wir ihn mit dem Kanalnamen und dem Ereignisnamen angeben. Sie erhalten den Dreh raus, während wir diesen Artikel durchgehen. Protokoll
Adapter. Wenn Sie den Pusher-Adapter als Standard -Broadcast -Treiber verwenden. Ändern wir also die Migrationsdatei
Datenbank/Migrations/xxxx_xx_xx_xxxxxx_create_messages_table.phpBevor Sie die Migrate -Befehl ausführen.
<?php<br><br>return [<br><br> /*<br> |--------------------------------------------------------------------------<br> | Default Broadcaster<br> |--------------------------------------------------------------------------<br> |<br> | This option controls the default broadcaster that will be used by the<br> | framework when an event needs to be broadcast. You may set this to<br> | any of the connections defined in the "connections" array below.<br> |<br> | Supported: "pusher", "redis", "log", "null"<br> |<br> */<br><br> 'default' => env('BROADCAST_DRIVER', 'null'),<br><br> /*<br> |--------------------------------------------------------------------------<br> | Broadcast Connections<br> |--------------------------------------------------------------------------<br> |<br> | Here you may define all of the broadcast connections that will be used<br> | to broadcast events to other systems or over websockets. Samples of<br> | each available type of connection are provided inside this array.<br> |<br> */<br><br> 'connections' => [<br><br> 'pusher' => [<br> 'driver' => 'pusher',<br> 'key' => env('PUSHER_APP_KEY'),<br> 'secret' => env('PUSHER_APP_SECRET'),<br> 'app_id' => env('PUSHER_APP_ID'),<br> 'options' => [<br> 'cluster' => env('PUSHER_APP_CLUSTER'),<br> 'useTLS' => true,<br> ],<br> ],<br><br> 'redis' => [<br> 'driver' => 'redis',<br> 'connection' => 'default',<br> ],<br><br> 'log' => [<br> 'driver' => 'log',<br> ],<br><br> 'null' => [<br> 'driver' => 'null',<br> ],<br><br> ],<br><br>];<br>
Wenn Sie ein benutzerdefiniertes Ereignis in Laravel anziehen möchten, sollten Sie eine Klasse für dieses Ereignis erstellen. Basierend auf der Art des Ereignisses reagiert Laravel entsprechend und nimmt die erforderlichen Maßnahmen aus. Wenn sich das Ereignis hingegen vom Broadcast-Typ befindet, sendet Laravel dieses Ereignis an den Web-Socket-Server, der in der Datei
config/runding.php konfiguriert ist. notwendige pusherbezogene Informationen. Weiter bewegen, verwenden wir die private
Echo-Methode, um den privaten Kanal Benutzer zu abonnieren. {user_id}
Echo die erforderliche Authentifizierung durch, indem der XHR im Hintergrund mit den erforderlichen Parametern gesendet wird. Schließlich versucht Laravel, den {user_id} <p> -Route <code> zu finden, und es sollte mit der Route übereinstimmen, die wir in den
Routen/Kanälen definiert haben. Von nun an können wir alle eingehenden Ereignisse auf diesem Kanal empfangen. Um die Dinge einfach zu halten, werden wir die Nachricht, die wir vom Pusher-Server erhalten haben, nur aufmerksam gemacht. Als nächstes durchlaufen wir die Methode senden <p> in der Controller-Datei, mit der das Broadcast-Ereignis erhöht wird. Daher haben wir versucht, dieses Verhalten in der Methode <code> senden zu nachzuahmen. Da das Ereignis <code> newmessagenotification
von sollte brOadcastNow
-Typ lädt, lädt Laravel die Standardkonfiguration aus der Datei config/Broadcasting.php. Schließlich sendet es das Ereignis newmessagenotifikation <code>private
auf den konfigurierten Web-Socket-Server auf dem user. {User_id} <code>user.{USER_ID}
Kanal. Echo
In unserem Fall wird das Ereignis auf dem user.{USER_ID}
-Kanal an den Pusher-Web-Socket-Server übertragen. Wenn die ID des Empfängerbenutzers 1
ist, wird das Ereignis über den user.1
Kanal übertragen. Wir haben bisher gebaut. Wenn Sie noch nicht angemeldet sind, werden Sie in den Anmeldebildschirm umgeleitet. Sobald Sie sich angemeldet haben, sollten Sie die von uns zuvor definierte Sendungsansicht sehen - noch nichts. Da wir die von der Pusher -Client -Bibliothek bereitgestellte
-Methode testen. Wenn Sie einen anderen Browser verwenden möchten, müssen Sie sich anmelden, um auf diese Seite zugreifen zu können. passiert. Gehen Sie zu Ihrem Pusher -Konto und navigieren Sie zu Ihrer Bewerbung. Unter der
-Debuggsollten Sie in der Lage sein, Nachrichten protokolliert zu sehen. Hoffentlich war es in einem einzigen GO nicht zu viel, da ich versucht habe, die Dinge nach bestem Wissen zu vereinfachen.
Heute haben wir eine der am wenigsten diskutierten Merkmale von Laravel - Broadcasting durchlaufen. Sie können in Echtzeitbenachrichtigungen über Web-Sockets senden. Während des gesamten Verlaufs dieses Artikels haben wir ein Beispiel in der Praxis aufgebaut, das das oben erwähnte Konzept demonstriert hat.
Das obige ist der detaillierte Inhalt vonWie Laravel Broadcasting funktioniert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!