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.