


Développement Laravel : Comment utiliser Laravel Broadcasting pour implémenter la communication websockets ?
Jun 13, 2023 pm 11:13 PMLaravel est un framework PHP puissant. Son utilisation répandue et sa syntaxe élégante en font l'un des frameworks préférés pour le développement PHP. Dans le développement Web, la communication en temps réel est essentielle pour de nombreuses applications. Dans Laravel, les websockets sont un moyen courant d'établir une communication en temps réel. Laravel Broadcasting est un outil courant permettant de mettre en œuvre facilement la communication par websockets. Dans cet article, je vais vous présenter comment utiliser Laravel Broadcasting pour implémenter la communication par websockets.
- Implémentation de Laravel Broadcasting
Dans Laravel, vous devez utiliser une sorte de pilote de diffusion, tel que Pusher ou Redis, pour implémenter Laravel Broadcasting . Avant de faire cela, vous devez utiliser Composer pour installer certains packages nécessaires, tels que :
composer require predis/predis pusher/pusher-php-server guzzlehttp/guzzle
Ces packages seront utilisés pour la diffusion à l'aide de Pusher ou Redis.
- Utiliser Pusher pour la diffusion
Pour utiliser Pusher pour la diffusion, vous devez introduire le package de dépendances Pusher dans Laravel et l'ajouter dans .env< Définissez les variables d'environnement liées à Pusher dans le fichier /code>. Après avoir installé Pusher, définissez l'option <code>pusher
sur true dans le fichier de diffusion /config/broadcasting.php
. Ensuite, nous pouvons utiliser le code suivant pour diffuser : .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的基本方法。
- 使用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和用户名的键值对,让其他用户知道是谁正在房间内。
- 在前端使用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); });
以上代码表示为,当有新的消息时,在控制台中输出消息内容。我们需要在NewMessage
rrreee
Broadcast::channel
signifie que seuls les utilisateurs du chat de la salle peuvent recevoir la diffusion. C'est la manière de base d'utiliser Pusher avec Laravel Broadcasting.
- Utiliser Redis pour la diffusion#🎜🎜#L'utilisation de Redis pour la diffusion est similaire à l'utilisation de Pusher. Dans Laravel, les variables d'environnement liées à Redis doivent être définies dans le fichier
.env
. Ensuite, dans le fichier de diffusion /config/broadcasting.php
, définissez l'option redis
sur true et configurez les paramètres liés à redis. #🎜🎜##🎜🎜#Dans le fichier de diffusion, il existe une classe PresenceChannel
qui enregistre les informations utilisateur, telles que le nom d'utilisateur et l'ID, dans Redis lorsqu'un utilisateur se connecte au canal. Vous pouvez utiliser le code suivant pour implémenter cette fonction : #🎜🎜#rrreee#🎜🎜#Le code ci-dessus est exprimé comme l'envoi de données JSON à Redis entre les utilisateurs de la salle de discussion. Il contient une paire clé-valeur d'identifiant et de nom d'utilisateur pour permettre aux autres utilisateurs de savoir qui est dans la salle. #🎜🎜#- #🎜🎜#Utiliser Laravel Broadcasting dans le front-end#🎜🎜##🎜🎜##🎜🎜#Maintenant que nous avons implémenté la diffusion dans Laravel, nous devons ensuite faire dans le front-end Utilisez la fonction de diffusion. Dans Laravel, vous pouvez utiliser Laravel Echo pour implémenter facilement cette fonctionnalité. Laravel Echo est une bibliothèque permettant de transférer des données entre des applications et des serveurs websocket. Laravel Echo peut être ajouté à l'application à l'aide du code suivant : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous utilisons Pusher comme pilote de diffusion, définissons les paramètres liés à Pusher, puis devons utiliser Laravel Echo dans le code frontal Écoutez les événements diffusés. Par exemple : #🎜🎜#rrreee#🎜🎜#Le code ci-dessus signifie que lorsqu'il y a un nouveau message, le contenu du message est affiché dans la console. Nous devons implémenter la logique de réception des messages diffusés dans l'événement
NewMessage
. Voici comment implémenter la communication websockets à l'aide de Laravel Broadcasting. #🎜🎜##🎜🎜#Résumé#🎜🎜##🎜🎜#Dans cet article, nous avons présenté comment utiliser Laravel Broadcasting pour implémenter la communication par websockets. Avant d'implémenter Laravel Broadcasting, nous devons d'abord installer les bibliothèques et packages nécessaires, puis utiliser le pilote Pusher ou Redis pour diffuser. Enfin, utilisez Laravel Echo dans le front-end pour écouter les événements diffusés. J'espère que cet article pourra vous aider à comprendre comment implémenter la communication par websockets à l'aide de Laravel Broadcasting. #🎜🎜#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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

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

PHP vs Flutter : le meilleur choix pour le développement mobile

Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ?

Analyse des avantages et inconvénients des outils de tests unitaires PHP

Architecture et pratique du système distribué PHP

Comparaison des dernières versions de Laravel et CodeIgniter

Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ?

Tests unitaires de code PHP et tests d'intégration
