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.