Web Doktoru - 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.
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.
İ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.
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.
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.
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.
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 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.
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.
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’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.
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.
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.
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 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.
Ö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.
Ö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.
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’de Mail Gönderme ve Bildirimler Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri…
Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel…
Laravel’de Çoklu Dil (Localization) Kullanımı: Uygulamanızı Küresel Hale Getirin 🌍 Laravel, modern web uygulamaları için…
Laravel’de Test Driven Development (TDD) ve Test Yazımı: Güvenilir ve Sürdürülebilir Kod Geliştirme Laravel, modern…
Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi Laravel, modern web uygulamalarında belirli…
Laravel Event & Listener Kullanımı: Modüler ve Esnek Uygulama Geliştirme Laravel, modern web uygulamaları geliştirirken…