Maison > cadre php > Laravel > Développement Laravel : Comment utiliser Laravel Broadcasting pour implémenter la communication websockets ?

Développement Laravel : Comment utiliser Laravel Broadcasting pour implémenter la communication websockets ?

PHPz
Libérer: 2023-06-13 23:13:46
original
1477 Les gens l'ont consulté

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.

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

Ces packages seront utilisés pour la diffusion à l'aide de Pusher ou Redis.

  1. 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;
});
Copier après la connexion

在这个例子中,Broadcast::channel方法表示只有在room聊天中的用户才能收到广播。这是Laravel Broadcasting使用Pusher的基本方法。

  1. 使用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
    ];
});
Copier après la connexion

以上代码表示为,在chat房间内的用户中,向redis发送JSON数据。它包含一个id和用户名的键值对,让其他用户知道是谁正在房间内。

  1. 在前端使用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
});
Copier après la connexion

在以上代码中,我们使用Pusher作为广播驱动,设置了Pusher相关的参数,然后需要在前端代码中使用Laravel Echo监听广播事件。例如:

Echo.channel(`chat.${roomId}`)
    .listen('NewMessage', (e) => {
        console.log(e);
});
Copier après la connexion

以上代码表示为,当有新的消息时,在控制台中输出消息内容。我们需要在NewMessagerrreee

Dans cet exemple, la méthode 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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal