Table des matières
Créer une classe d'événements
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.
CONCLUSION
Maison développement back-end tutoriel php Comment fonctionne la diffusion Laravel

Comment fonctionne la diffusion Laravel

Mar 05, 2025 am 09:27 AM

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
config / radiodiffusion.php

.

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>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Comme vous pouvez le voir, nous avons modifié le pilote de diffusion par défaut en messages

. Changeons donc le fichier de migration

Base de données / migrations / xxxx_xx_xx_xxxxxx_create_messages_table.php

avant 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>
Copier après la connexion
Copier après la connexion
Copier après la connexion
dans la base de données.

<?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>
Copier après la connexion
Copier après la connexion
Copier après la connexion

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

Echo pour s'abonner à la chaîne 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

Dans notre cas, nous allons informer les utilisateurs enregistrés lorsqu'ils reçoivent un nouveau message. Nous avons donc essayé d'imiter ce comportement dans la méthode 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

au serveur de socle Web configuré sur le 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">...&lt;br&gt;...&lt;br&gt;BROADCAST_DRIVER=pusher&lt;br&gt;&lt;br&gt;PUSHER_APP_ID={YOUR_APP_ID}&lt;br&gt;PUSHER_APP_KEY={YOUR_APP_KEY}&lt;br&gt;PUSHER_APP_SECRET={YOUR_APP_SECRET}&lt;br&gt;PUSHER_APP_CLUSTER={YOUR_APP_CLUSTER}&lt;br&gt;...&lt;br&gt;...&lt;br&gt;</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>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Ensuite, ouvrirons l'URL http: // your-laravel-site-doMain / Message / Send dans l'autre onglet ou dans un autre navigateur. Si vous allez utiliser un autre navigateur, vous devez vous connecter pour pouvoir accéder à cette page.

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>
Copier après la connexion
Copier après la connexion
Copier après la connexion
debug

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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

<🎜>: Grow A Garden - Guide de mutation complet
4 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜> Obscur: Expedition 33 - Comment obtenir des catalyseurs de chrome parfaits
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel Java
1677
14
Tutoriel PHP
1278
29
Tutoriel C#
1257
24
Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Apr 17, 2025 am 12:06 AM

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.

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Apr 17, 2025 am 12:25 AM

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 et Python: différents paradigmes expliqués PHP et Python: différents paradigmes expliqués Apr 18, 2025 am 12:26 AM

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.

Choisir entre PHP et Python: un guide Choisir entre PHP et Python: un guide Apr 18, 2025 am 12:24 AM

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 et Python: une plongée profonde dans leur histoire PHP et Python: une plongée profonde dans leur histoire Apr 18, 2025 am 12:25 AM

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.

Pourquoi utiliser PHP? Avantages et avantages expliqués Pourquoi utiliser PHP? Avantages et avantages expliqués Apr 16, 2025 am 12:16 AM

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 et frameworks: moderniser la langue PHP et frameworks: moderniser la langue Apr 18, 2025 am 12:14 AM

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.

Impact de PHP: développement Web et au-delà Impact de PHP: développement Web et au-delà Apr 18, 2025 am 12:10 AM

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

See all articles