Laravel 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.
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.
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进行广播与使用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中实现了广播,接下来我们需要在前端中使用广播功能。在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.
.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. #🎜🎜#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!