Mengintegrasikan Laravel WebSocket dengan database adalah bagian penting dalam membangun aplikasi waktu nyata seperti Obrolan, pemberitahuan instan, dan pelacakan peristiwa. Dengan menggabungkannya WebSocket dengan database, kita dapat menyimpan dan mengelola data real-time secara efektif. Berikut cara mengintegrasikan Laravel WebSocket dengan database.
Langkah 1: Instal Laravel WebSocket Paket
Pertama, instal dan konfigurasikan laravel-websockets
paket. Gunakan Komposer untuk menginstal paket:
composer require beyondcode/laravel-websockets
Setelah diinstal, Anda perlu menerbitkan file konfigurasi dan melakukan tugas yang diperlukan:
php artisan vendor:publish --tag=websockets-config
php artisan migrate
Langkah 2: Buat Tabel Database untuk Pesan
Kami akan membuat tabel di database untuk menyimpan pesan. Gunakan perintah berikut untuk membuat messages
tabel:
php artisan make:model Message -m
Setelah menjalankan perintah, Anda akan melihat migration file yang dibuat di database/migrations
direktori. Buka migration file dan tentukan struktur tabel 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');
});
}
Jalankan migration perintah untuk membuat tabel di database:
php artisan migrate
Langkah 3: Menangani Persistensi Pesan via WebSocket
Saat pengguna mengirim pesan, kita perlu menangani dan menyimpan pesan tersebut ke dalam database. Dalam peristiwa terkirim pesan, Anda dapat menggunakan Laravel Penyiaran untuk mengirim pesan WebSocket dan sekaligus menyimpan pesan dalam database.
// 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();
}
Kesimpulan
Mengintegrasikan Laravel WebSocket dengan database memungkinkan Anda menyimpan dan mengelola data real-time secara efektif. Dengan menggabungkannya WebSocket dengan database, Anda dapat membangun aplikasi real-time yang kompleks seperti Obrolan, notifikasi instan, dan pelacakan peristiwa dengan cara yang fleksibel dan andal.