Intégration Laravel WebSocket avec la base de données : gestion des données en temps réel

L'intégration Laravel WebSocket à une base de données est un élément crucial de la création d'applications en temps réel telles que le chat, les notifications instantanées et le suivi des événements. En combinant WebSocket avec une base de données, nous pouvons stocker et gérer efficacement les données en temps réel. Voici comment intégrer Laravel WebSocket une base de données.

Étape 1 : Installer Laravel WebSocket le package

Tout d'abord, installez et configurez le laravel-websockets package. Utilisez Composer pour installer le package :

composer require beyondcode/laravel-websockets

Une fois installé, vous devez publier les fichiers de configuration et effectuer les tâches nécessaires :

php artisan vendor:publish --tag=websockets-config  
php artisan migrate  

Étape 2 : Créer une table de base de données pour les messages

Nous allons créer une table dans la base de données pour stocker les messages. Utilisez la commande suivante pour créer la messages table :

php artisan make:model Message -m

Après avoir exécuté la commande, vous verrez un migration fichier créé dans le database/migrations répertoire. Ouvrez le migration fichier et définissez la structure du messages tableau :

// database/migrations/xxxx_xx_xx_create_messages_table.php  
  
public function up()  
{  
    Schema::create('messages', function(Blueprint $table) {  
        $table->id();  
        $table->unsignedBigInteger('user_id');  
        $table->text('content');  
        $table->timestamps();  
  
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');  
    });  
}  

Exécutez la migration commande pour créer la table dans la base de données :

php artisan migrate

Étape 3 : Gestion de la persistance des messages via WebSocket

Lorsqu'un utilisateur envoie un message, nous devons gérer et conserver le message dans la base de données. Dans l'événement de message envoyé, vous pouvez utiliser Laravel la diffusion pour envoyer le message WebSocket et enregistrer simultanément le message dans la base de données.

// app/Events/MessageSent.php  
  
public function broadcastOn()  
{  
    return new Channel('chat');  
}  
  
public function broadcastWith()  
{  
    return [  
        'message' => $this->message,  
        'user' => $this->user,  
    ];  
}  
// app/Listeners/SaveMessage.php  
  
public function handle(MessageSent $event)  
{  
    $message = new Message();  
    $message->user_id = $event->user->id;  
    $message->content = $event->message;  
    $message->save();  
}  

Conclusion

L'intégration Laravel WebSocket à une base de données vous permet de stocker et de gérer efficacement des données en temps réel. En combinant WebSocket avec une base de données, vous pouvez créer des applications complexes en temps réel comme le chat, les notifications instantanées et le suivi des événements de manière flexible et puissante.