Integracija Laravel WebSocket s bazom podataka ključan je dio izgradnje aplikacija u stvarnom vremenu kao što su Chat, trenutne obavijesti i praćenje događaja. Kombinacijom WebSocket s bazom podataka možemo učinkovito pohranjivati i upravljati podacima u stvarnom vremenu. Evo kako se integrirati Laravel WebSocket s bazom podataka.
Korak 1: Instalirajte Laravel WebSocket paket
Najprije instalirajte i konfigurirajte laravel-websockets
paket. Koristite Composer za instaliranje paketa:
composer require beyondcode/laravel-websockets
Nakon instalacije morate objaviti konfiguracijske datoteke i izvršiti potrebne zadatke:
php artisan vendor:publish --tag=websockets-config
php artisan migrate
Korak 2: Stvorite tablicu baze podataka za poruke
Napravit ćemo tablicu u bazi podataka za pohranu poruka. Koristite sljedeću naredbu za izradu messages
tablice:
php artisan make:model Message -m
Nakon pokretanja naredbe, vidjet ćete migration datoteku stvorenu u database/migrations
direktoriju. Otvorite migration datoteku i definirajte strukturu tablice 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');
});
}
Pokrenite migration naredbu za izradu tablice u bazi podataka:
php artisan migrate
Korak 3: Rukovanje postojanošću poruke putem WebSocket
Kada korisnik pošalje poruku, moramo obraditi poruku i zadržati je u bazi podataka. U događaju slanja poruke možete koristiti Laravel Broadcasting za slanje poruke WebSocket i istovremeno spremanje poruke u bazu podataka.
// 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();
}
Zaključak
Integracija Laravel WebSocket s bazom podataka omogućuje učinkovito pohranjivanje i upravljanje podacima u stvarnom vremenu. Kombinacijom WebSocket s bazom podataka možete izgraditi složene aplikacije u stvarnom vremenu kao što su Chat, trenutne obavijesti i praćenje događaja na fleksibilan i moćan način.