Integrering Laravel WebSocket med database: Sanntidsdatabehandling

Integrering Laravel WebSocket med en database er en avgjørende del av å bygge sanntidsapplikasjoner som Chat, øyeblikkelige varsler og hendelsessporing. Ved å kombinere WebSocket med en database kan vi effektivt lagre og administrere sanntidsdata. Her er hvordan du integrerer Laravel WebSocket med en database.

Trinn 1: Installer Laravel WebSocket pakken

Først, installer og konfigurer laravel-websockets pakken. Bruk Composer til å installere pakken:

composer require beyondcode/laravel-websockets

Når den er installert, må du publisere konfigurasjonsfilene og utføre nødvendige oppgaver:

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

Trinn 2: Lag databasetabell for meldinger

Vi lager en tabell i databasen for å lagre meldinger. Bruk følgende kommando for å lage messages tabellen:

php artisan make:model Message -m

Etter å ha kjørt kommandoen, vil du se en migration fil opprettet i database/migrations katalogen. Åpne migration filen og definer strukturen til tabellen 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');  
    });  
}  

Kjør migration kommandoen for å lage tabellen i databasen:

php artisan migrate

Trinn 3: Håndtering av meldingspersistens via WebSocket

Når en bruker sender en melding, må vi håndtere og vedvare meldingen inn i databasen. I meldingssendt hendelse kan du bruke Laravel Broadcasting til å sende meldingen over WebSocket og samtidig lagre meldingen 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();  
}  

Konklusjon

Integrering Laravel WebSocket med en database lar deg lagre og administrere sanntidsdata effektivt. Ved å kombinere WebSocket med en database kan du bygge komplekse sanntidsapplikasjoner som Chat, øyeblikkelige varsler og hendelsessporing på en fleksibel og kraftig måte.