Maison > cadre php > Laravel > Développement WebSockets avec Laravel : une solution pour communiquer en temps réel

Développement WebSockets avec Laravel : une solution pour communiquer en temps réel

WBOY
Libérer: 2023-08-13 13:46:55
original
2868 Les gens l'ont consulté

Développement WebSockets avec Laravel : une solution pour communiquer en temps réel

Développement WebSockets avec Laravel : Une solution pour la communication en temps réel

Citation :

À mesure que les applications Web évoluent, la communication en temps réel devient de plus en plus importante. Le modèle traditionnel de requête-réponse HTTP limite la nature en temps réel des applications, c'est pourquoi les utilisateurs ont commencé à rechercher de nouvelles solutions. La technologie WebSockets est née, qui permet d'établir une connexion persistante entre le client et le serveur, ce qui peut réaliser la fonction de communication en temps réel. Cet article présentera comment utiliser le framework Laravel pour développer facilement des applications de communication en temps réel basées sur WebSockets.

Que sont les WebSockets ?

WebSocket est un protocole de communication qui établit une connexion persistante bidirectionnelle entre un client et un serveur. Contrairement au modèle de requête-réponse HTTP traditionnel, WebSocket permet au serveur et au client d'échanger des données en temps réel. La communication WebSocket est en duplex intégral, ce qui signifie que le serveur et le client peuvent envoyer et recevoir des données en même temps.

Pourquoi choisir Laravel ?

Laravel est un framework de développement PHP populaire qui fournit de nombreuses fonctionnalités et outils puissants pour rendre la création d'applications Web plus facile et plus efficace. Le framework Laravel offre une bonne prise en charge de la communication en temps réel, et les packages d'extension Laravel Echo et Laravel WebSockets facilitent et simplifient le développement d'applications basées sur WebSockets.

Commencez à utiliser Laravel WebSockets :

Tout d'abord, nous devons installer le package d'extension Laravel WebSockets. Exécutez la commande suivante dans le terminal :

composer require beyondcode/laravel-websockets
Copier après la connexion

Une fois l'installation terminée, exécutez la commande suivante pour publier le fichier de configuration :

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"
Copier après la connexion

Ensuite, nous devons générer le fichier de migration de la base de données liée aux WebSockets :

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"
php artisan migrate
Copier après la connexion

Configurer Laravel WebSockets :

Ouvrez le fichier de configuration de Laravel "config/websockets.php", nous pouvons définir certaines options de configuration liées aux WebSockets, telles que l'adresse et le port d'écoute, l'authentification et l'autorisation, etc.

Création d'événements :

Dans Laravel, nous utilisons des événements pour gérer la communication en temps réel. Tout d’abord, nous devons créer une classe d’événements. Exécutez la commande suivante pour créer une classe nommée événement « NewMessage » :

php artisan make:event NewMessage
Copier après la connexion

Ouvrez la classe d'événement nouvellement créée « app/Events/NewMessage.php », nous pouvons définir certaines propriétés et méthodes pour l'événement. Par exemple, nous pouvons ajouter une propriété appelée "message" à l'événement, qui stockera le contenu du message que nous souhaitons diffuser.

public $message;

public function __construct($message)
{
    $this->message = $message;
}
Copier après la connexion

La prochaine étape consiste à créer un diffuseur d'événements. Exécutez la commande suivante pour créer une classe de diffuseur nommée "NewMessageBroadcast" :

php artisan make:channel NewMessageBroadcast
Copier après la connexion

Ouvrez la classe de diffuseur nouvellement créée "app/Broadcasting/NewMessageBroadcast.php", nous devons définir une méthode permettant au diffuseur de gérer la diffusion des événements.

public function broadcastOn()
{
    return new Channel('new-message');
}

public function broadcastAs()
{
    return 'message';
}
Copier après la connexion

Configuration du pilote de diffusion :

Ouvrez le fichier de configuration de Laravel "config/broadcasting.php", nous pouvons définir le type de pilote de diffusion sur "pusher" et fournir les options de configuration associées.

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'cluster' => env('PUSHER_APP_CLUSTER'),
        'useTLS' => true,
    ],
],
Copier après la connexion

Une fois la configuration terminée, nous pouvons utiliser Pusher comme pilote de diffusion.

Gestion des événements :

Dans notre application, nous pouvons déclencher notre événement dans un contrôleur ou un modèle et l'envoyer en utilisant la classe de diffusion. Voici un exemple :

use AppEventsNewMessage;
use IlluminateHttpRequest;

public function sendMessage(Request $request)
{
    // 处理接收到的消息
    $message = $request->input('message');

    // 触发事件并广播
    event(new NewMessage($message));

    return response()->json(['message' => 'Message sent.']);
}
Copier après la connexion

Dans le code ci-dessus, nous récupérons d'abord le contenu du message reçu de la requête. Nous déclenchons ensuite notre événement personnalisé "NewMessage" en utilisant la classe d'événement "event" de Laravel. Enfin, nous renvoyons une réponse JSON indiquant que le message a été envoyé.

Écouter la diffusion :

Ensuite, nous devons créer un script frontal qui écoute la diffusion. Dans votre code HTML, ajoutez le code suivant :

<script src="https://cdn.jsdelivr.net/npm/laravel-echo@^1.10.0/dist/echo.min.js"></script>
<script src="/js/app.js"></script>
<script>
    // 与WebSockets服务器建立连接
    const echo = new Echo({
        broadcaster: 'pusher',
        key: 'your-pusher-key',
        cluster: 'your-pusher-cluster',
        encrypted: true,
    });

    // 监听来自"new-message"频道的消息
    echo.channel('new-message')
        .listen('.message', (message) => {
            console.log(message);
        });
</script>
Copier après la connexion

Dans le code ci-dessus, nous introduisons d'abord Laravel Echo et notre fichier JavaScript front-end. Nous avons ensuite initialisé l'instance Echo à l'aide de la clé Pusher et des informations de cluster configurées précédemment. Enfin, nous écoutons le canal nommé "new-message" en utilisant la méthode "echo.channel()" et traitons les messages de ce canal en utilisant la méthode ".listen()".

Conclusion :

L'utilisation de Laravel pour le développement de WebSockets est une solution idéale pour la communication en temps réel. Les packages d'extension Laravel Echo et Laravel WebSockets fournis par Laravel rendent la création d'applications basées sur WebSockets simple et efficace. En suivant les étapes et l'exemple de code de cet article, vous serez en mesure de créer rapidement une puissante application de communication en temps réel. Je vous souhaite du succès dans votre processus de développement !

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