Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler
Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü araçlar sunar. WebSockets, Pusher, Laravel Echo ve Broadcasting gibi teknolojiler sayesinde, kullanıcılara anlık olarak bildirimler göndermek mümkündür. Bu yazıda, Laravel’de gerçek zamanlı bildirimler oluşturmayı ve bu bildirimleri kullanıcılara nasıl iletebileceğinizi adım adım öğreneceksiniz.
1️⃣ Laravel Broadcast Kurulumu
Gerçek zamanlı bildirimler oluşturmak için öncelikle Laravel’in broadcasting (yayınlama) özelliğini aktif hale getirmeniz gerekiyor. Bu özellik, uygulamanızın belirli olayları (events) dinleyerek kullanıcılara anlık bildirimler göndermesini sağlar.
Broadcasting Yapılandırması
İlk adım olarak, broadcasting yapılandırmasını açmanız gerekiyor. Bunun için aşağıdaki Artisan komutunu kullanabilirsiniz:
php artisan vendor:publish --tag=laravel-broadcasting
Bu komut, broadcasting ile ilgili yapılandırma dosyalarını projenize ekler.
.env Dosyasında Ayarlar
Broadcasting özelliğini kullanmak için .env
dosyanızda aşağıdaki ayarları yapmanız gerekiyor:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
Bu ayarlar, Laravel’in Pusher gibi bir yayınlama servisi ile entegre olmasını sağlar.
Gerekli Paketlerin Yüklenmesi
Broadcasting özelliğini kullanmak için pusher/pusher-php-server
ve laravel-echo
gibi paketleri yüklemeniz gerekiyor. Aşağıdaki komutları kullanarak bu paketleri yükleyebilirsiniz:
composer require pusher/pusher-php-server
npm install --save laravel-echo pusher-js
Bu paketler, Laravel’in gerçek zamanlı bildirimler göndermesini sağlar.
Broadcasting Yapılandırmasını Etkinleştirme
Son olarak, config/broadcasting.php
dosyasında Pusher’ı varsayılan yayınlama sürücüsü olarak ayarlayın:
'default' => env('BROADCAST_DRIVER', 'pusher'),
Bu adım, Laravel’in Pusher üzerinden yayın yapmasını sağlar.
2️⃣ Broadcast Kullanımı ve Olay (Event) Tanımlama
Broadcasting özelliğini kullanmak için öncelikle bir olay (event) tanımlamanız gerekiyor. Bu olay, gerçek zamanlı olarak kullanıcılara bildirim göndermek için kullanılır.
Yeni Bir Olay (Event) Oluşturma
Yeni bir olay oluşturmak için aşağıdaki Artisan komutunu kullanabilirsiniz:
php artisan make:event NewMessageEvent
Bu komut, app/Events/NewMessageEvent.php
dosyasını oluşturur. Bu dosya, olayın nasıl yayınlanacağını ve hangi kanal üzerinden gönderileceğini belirler.
Olayı Yayınlama
Oluşturduğunuz olayı yayınlamak için aşağıdaki kodu kullanabilirsiniz:
use App\Events\NewMessageEvent;
public function sendMessage()
{
$message = "Bu bir test mesajıdır!";
broadcast(new NewMessageEvent($message))->toOthers();
return response()->json(['success' => true]);
}
Bu kod, NewMessageEvent
olayını yayınlar ve kullanıcılara anlık olarak bildirim gönderir.
3️⃣ Laravel Echo ile Gerçek Zamanlı Bildirimler
Laravel Echo, gerçek zamanlı bildirimleri dinlemek için kullanılan bir JavaScript kütüphanesidir. Bu kütüphane sayesinde, yayınlanan olayları dinleyebilir ve kullanıcıya anlık olarak bildirim gösterebilirsiniz.
Laravel Echo Kurulumu
Laravel Echo’yu kullanmak için öncelikle resources/js/bootstrap.js
dosyasına aşağıdaki kodu eklemeniz gerekiyor:
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true
});
Bu kod, Laravel Echo’yu Pusher ile entegre eder.
Bildirimleri Dinleme
Yayınlanan olayları dinlemek için resources/js/app.js
dosyasına aşağıdaki kodu ekleyebilirsiniz:
window.Echo.channel('messages')
.listen('.new-message', (data) => {
console.log('Yeni mesaj:', data.message);
alert('Yeni mesaj geldi: ' + data.message);
});
Bu kod, messages
kanalı üzerinden gelen mesajları dinler ve kullanıcıya bir bildirim gösterir.
Değişiklikleri Uygulama
Son olarak, değişiklikleri uygulamak için aşağıdaki komutu çalıştırın:
npm run dev
Bu komut, JavaScript dosyalarını derler ve değişiklikleri uygular.
4️⃣ Private & Presence Channels Kullanımı
Laravel, özel (private) ve varlık (presence) kanalları sayesinde, belirli kullanıcılara özel bildirimler göndermenizi sağlar. Bu kanallar, kullanıcı doğrulaması gerektiren durumlar için idealdir.
Özel Kanal Tanımlama
Özel bir kanal tanımlamak için olay sınıfınızda aşağıdaki kodu kullanabilirsiniz:
public function broadcastOn()
{
return new PrivateChannel('user.' . auth()->id());
}
Bu kod, sadece belirli bir kullanıcıya özel bir kanal oluşturur.
Kanal Yetkilendirmesi
Özel kanalları kullanmak için routes/channels.php
dosyasında yetkilendirme eklemeniz gerekiyor:
Broadcast::channel('user.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Bu kod, sadece belirli bir kullanıcının kanalı dinlemesine izin verir.
Laravel Echo ile Özel Kanal Dinleme
Özel kanalı dinlemek için aşağıdaki kodu kullanabilirsiniz:
window.Echo.private(`user.${userId}`)
.listen('.new-message', (data) => {
console.log('Özel mesaj:', data.message);
});
Bu kod, sadece belirli bir kullanıcıya özel mesajları dinler.
Sonuç
Laravel, gerçek zamanlı bildirimler oluşturmak için oldukça güçlü bir altyapı sunar. Bu yazıda, Laravel’de broadcasting özelliğini nasıl kullanacağınızı, olaylar (events) oluşturmayı, Laravel Echo ile bildirimleri dinlemeyi ve özel kanallar kullanmayı öğrendiniz. Bu araçlar sayesinde, kullanıcılarınıza anlık olarak bildirimler gönderebilir ve uygulamanızın etkileşimini artırabilirsiniz.
Laravel Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı