Integration Laravel WebSocket med database: Real-Time Data Management

Integration Laravel WebSocket med en database er en afgørende del af opbygningen af ​​realtidsapplikationer som Chat, øjeblikkelige meddelelser og hændelsessporing. Ved at kombinere WebSocket med en database kan vi effektivt gemme og administrere data i realtid. Her er hvordan du integrerer Laravel WebSocket med en database.

Trin 1: Installer Laravel WebSocket pakke

Først skal du installere og konfigurere laravel-websockets pakken. Brug Composer til at installere pakken:

composer require beyondcode/laravel-websockets

Når det er installeret, skal du udgive konfigurationsfilerne og udføre de nødvendige opgaver:

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

Trin 2: Opret databasetabel til meddelelser

Vi opretter en tabel i databasen til at gemme meddelelser. Brug følgende kommando til at oprette tabellen messages:

php artisan make:model Message -m

Efter at have kørt kommandoen, vil du se en migration fil oprettet i database/migrations mappen. Åbn migration filen og definer tabellens struktur messages:

// 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');  
    });  
}  

Kør migration kommandoen for at oprette tabellen i databasen:

php artisan migrate

Trin 3: Håndtering af Message Persistence via WebSocket

Når en bruger sender en besked, skal vi håndtere og vedholde beskeden i databasen. I den besked-sendte begivenhed kan du bruge Laravel Broadcasting til at sende beskeden over WebSocket og samtidig gemme beskeden i databasen.

// 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();  
}  

Konklusion

Integration Laravel WebSocket med en database giver dig mulighed for at gemme og administrere realtidsdata effektivt. Ved at kombinere WebSocket med en database kan du bygge komplekse realtidsapplikationer som Chat, øjeblikkelige meddelelser og hændelsessporing på en fleksibel og kraftfuld måde.