Comment fonctionne la diffusion Laravel
Aujourd'hui, nous allons explorer le concept de diffusion dans le cadre Web de Laravel. Il vous permet d'envoyer des notifications du côté client lorsque quelque chose se produit du côté du serveur. Dans cet article, nous allons utiliser la bibliothèque de poussoir tierce pour envoyer des notifications du côté client.
Si vous avez toujours voulu envoyer des notifications du serveur au client lorsque quelque chose se passe sur un serveur à Laravel, vous recherchez la fonction de diffusion. Maintenant, lorsque l'utilisateur A envoie un message à l'utilisateur B, vous souhaitez informer l'utilisateur B en temps réel. Vous pouvez afficher une fenêtre contextuelle ou une boîte alerte qui informe l'utilisateur B du nouveau message!
C'est le cas d'utilisation parfait pour parcourir le concept de diffusion à Laravel, et c'est ce que nous implémenterons dans cet article.
Si vous vous demandez comment le serveur pourrait envoyer des notifications au client, il utilise des sockets sous le capot pour y accomplir. Comprenons le flux de base des sockets avant de plonger plus profondément dans l'implémentation réelle.
Tout d'abord, vous avez besoin d'un serveur qui prend en charge le protocole de sockts Web et permet au client d'établir une connexion de socket Web.
- Vous pouvez implémenter votre propre serveur ou utiliser un service tiers comme Pusher. Nous préférerons ce dernier dans cet article.
- Le client initie une connexion de socket Web au serveur de socket Web et reçoit un identifiant unique sur une connexion réussie.
- Le côté serveur, lorsqu'un événement particulier se produit, nous informons le serveur Web-Socket en lui fournissant le nom de la chaîne et le nom de l'événement.
- Et enfin, le serveur Web-Socket diffuse cet événement aux clients enregistrés sur cette chaîne particulière.
- Ne vous inquiétez pas si cela ressemble trop en une seule fois; Vous aurez le point de le faire lorsque nous vous déplacerons dans cet article.
- Fichier de configuration de diffusion
- Ensuite, examinons le fichier de configuration de diffusion par défaut sur
.
Par défaut, les supports de lavels sont les adaptateurs multiples pour utiliser le noyau lui-même. Adaptateur log
. Bien sûr, si vous utilisez l'adaptateur Pusher comme pilote de diffusion par défaut.
<?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>
. Changeons donc le fichier de migration
Base de données / migrations / xxxx_xx_xx_xxxxxx_create_messages_table.phpavant d'exécuter la commande migrate.
Maintenant, maintenant, exécutons le tableau des messages...<br>...<br>BROADCAST_DRIVER=pusher<br><br>PUSHER_APP_ID={YOUR_APP_ID}<br>PUSHER_APP_KEY={YOUR_APP_KEY}<br>PUSHER_APP_SECRET={YOUR_APP_SECRET}<br>PUSHER_APP_CLUSTER={YOUR_APP_CLUSTER}<br>...<br>...<br>
<?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>
Créer une classe d'événements
Chaque fois que vous souhaitez élever un événement personnalisé dans Laravel, vous devez créer une classe pour cet événement. Sur la base du type d'événement, Laravel réagit en conséquence et prend les actions nécessaires.
Si l'événement est un événement normal, Laravel appelle les classes d'auditeur associées. D'un autre côté, si l'événement est du type de diffusion, Laravel envoie cet événement au serveur Web-Socket qui est configuré dans le fichier Config / Broadcasting.php . et d'autres informations liées au poussoir nécessaires.
En déplaçant plus loin, nous utilisons la méthode privée
utilisateur. {user_id} <p>. Comme nous l'avons discuté précédemment, le client doit s'authentifier avant de s'abonner au canal privé. Ainsi, l'objet <code> echo
effectue l'authentification nécessaire en envoyant le XHR en arrière-plan avec les paramètres nécessaires. Enfin, Laravel essaie de trouver le utilisateur. {User_id}
, et il devrait correspondre à l'itinéraire que nous avons défini dans le fichier Routes / Channels.php private
. À partir de maintenant, nous serons en mesure de recevoir tous les événements entrants sur cette chaîne. user.{USER_ID}
Echo
Dans notre cas, nous voulons écouter l'événement newMessageNotification <code>user.{USER_ID}
, et donc nous avons utilisé la méthode écouter <strong> de l'objet <code> echo
pour y parvenir. Pour garder les choses simples, nous allons simplement alerter le message que nous avons reçu du serveur Pusher.
Donc, il s'agissait de la configuration de la réception des événements du serveur de sockés Web. Ensuite, nous allons passer par la méthode Envoyer <code>user.{USER_ID}
dans le fichier de contrôleur qui soulève l'événement de diffusion.
Faisons rapidement le code de la méthode Envoyer <code>NewMessageNotification
. listen
Echo
Envoyer <p>. Étant donné que l'événement <code> newMessageNotification <code>send
est de de type broadcastNow
, Laravel charge la configuration de diffusion par défaut du fichier config / radioclasting.php send
. Enfin, il diffuse l'événement newMessageNotification
utilisateur. {User_id} <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">...<br>...<br>BROADCAST_DRIVER=pusher<br><br>PUSHER_APP_ID={YOUR_APP_ID}<br>PUSHER_APP_KEY={YOUR_APP_KEY}<br>PUSHER_APP_SECRET={YOUR_APP_SECRET}<br>PUSHER_APP_CLUSTER={YOUR_APP_CLUSTER}<br>...<br>...<br></pre><div class="contentsignin">Copier après la connexion</div></div><div class="contentsignin">Copier après la connexion</div></div><div class="contentsignin">Copier après la connexion</div></div> canal. <p></p>
<p> Dans notre cas, l'événement sera diffusé sur le serveur de socle Web Pusher sur le canal <code>user.{USER_ID}
. Si l'ID de l'utilisateur du destinataire est 1
, l'événement sera diffusé sur la chaîne user.1
. Comme nous l'avons discuté précédemment, nous avons déjà une configuration qui écoute les événements de cette chaîne, donc il devrait être en mesure de recevoir cet événement, et la boîte d'alerte est affichée à l'utilisateur! que nous avons construit jusqu'à présent.
Ouvrez l'URL https: // your-laravel-site-domain / message / index dans votre navigateur. Si vous n'êtes pas encore connecté, vous serez redirigé vers l'écran de connexion. Une fois que vous êtes connecté, vous devriez voir la vue diffusée que nous avons définie plus tôt - rien de fantaisie encore.
En fait, Laravel a déjà fait un peu de travail en arrière-plan pour vous. Comme nous avons activé le paramètre
fourni par la bibliothèque Client Pusher, il enregistre tout dans la console du navigateur à des fins de débogage. Voyons ce qui est connecté à la console lorsque vous accédez à la page http: // your-laravel-site-domain / message / index.
Il a ouvert la connexion Web-Socket avec le serveur Web-Socket Pusher et s'est abonné pour écouter des événements sur la chaîne privée. Bien sûr, vous pouvez avoir un nom de canal différent dans votre cas en fonction de l'ID de l'utilisateur avec lequel vous êtes connecté. Maintenant, gardons cette page ouverte alors que nous déménageons pour tester la méthode Pusher.logToConsole
.
<?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>
send
Dès que vous ouvrez la page http: // your-laravel-site-doMain / Message / Send, vous devriez pouvoir voir un message d'alerte dans l'autre onglet à http: // votre avis de contre-domain / index. s'est produit.
Comme vous pouvez le voir, il vous indique que vous venez de recevoir l'événement
du serveur de socle Web Pusher sur le canal
.En fait, vous pouvez également voir ce qui se passe là-bas à l'extrémité du poussoir. Accédez à votre compte Pusher et accédez à votre application. Sous la console
...<br>...<br>BROADCAST_DRIVER=pusher<br><br>PUSHER_APP_ID={YOUR_APP_ID}<br>PUSHER_APP_KEY={YOUR_APP_KEY}<br>PUSHER_APP_SECRET={YOUR_APP_SECRET}<br>PUSHER_APP_CLUSTER={YOUR_APP_CLUSTER}<br>...<br>...<br>
AppEventsNewMessageNotification
Console private-user.2
, vous devriez pouvoir voir des messages enregistrés.
et cela nous amène à la fin de cet article! J'espère que ce n'était pas trop en un seul coup car j'ai essayé de simplifier les choses à ma connaissance.
CONCLUSION
Aujourd'hui, nous avons parcouru l'une des caractéristiques les moins discutées de Laravel - Broadcasting. Il vous permet d'envoyer des notifications en temps réel à l'aide de sockets Web. Tout au long de cet article, nous avons construit un exemple réel qui a démontré le concept susmentionné.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

PHP est originaire en 1994 et a été développé par Rasmuslerdorf. Il a été utilisé à l'origine pour suivre les visiteurs du site Web et a progressivement évolué en un langage de script côté serveur et a été largement utilisé dans le développement Web. Python a été développé par Guidovan Rossum à la fin des années 1980 et a été publié pour la première fois en 1991. Il met l'accent sur la lisibilité et la simplicité du code, et convient à l'informatique scientifique, à l'analyse des données et à d'autres domaines.

Les principaux avantages du PHP comprennent la facilité d'apprentissage, un soutien solide sur le développement Web, les bibliothèques et les cadres riches, les performances élevées et l'évolutivité, la compatibilité multiplateforme et la rentabilité. 1) Facile à apprendre et à utiliser, adapté aux débutants; 2) une bonne intégration avec les serveurs Web et prend en charge plusieurs bases de données; 3) ont des cadres puissants tels que Laravel; 4) Des performances élevées peuvent être obtenues grâce à l'optimisation; 5) prendre en charge plusieurs systèmes d'exploitation; 6) Open source pour réduire les coûts de développement.

PHP reste important dans le processus de modernisation car il prend en charge un grand nombre de sites Web et d'applications et d'adapter les besoins de développement via des cadres. 1.Php7 améliore les performances et introduit de nouvelles fonctionnalités. 2. Des cadres modernes tels que Laravel, Symfony et Codeigniter simplifient le développement et améliorent la qualité du code. 3. L'optimisation des performances et les meilleures pratiques améliorent encore l'efficacité de l'application.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip
