Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel Reverb ve Deploynix: Üretimde Gerçek Zamanlı WebSocket’ler
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel Reverb ve Deploynix: Üretimde Gerçek Zamanlı WebSocket’ler

Yazılım

Laravel Reverb ve Deploynix: Üretimde Gerçek Zamanlı WebSocket’ler

teknomers
Son güncelleme: 9 Nisan 2026 04:43
teknomers
Paylaş
Paylaş

Gerçek zamanlı özellikler, bir web uygulamasını dönüştürür. Canlı bildirimler, sohbet, işbirlikçi düzenleme, gerçek zamanlı panolar, canlı yorumlar. Kullanıcılar, sayfayı yenilemeden anlık güncellemeler bekler. Laravel Reverb, Laravel için resmi birinci taraf WebSocket sunucusudur ve gerçek zamanlı özellikleri oluşturmayı oldukça basit hale getirir. Yerel olarak çalıştırmak kolaydır. Ancak, Nginx arkasında SSL ile üretimde güvenilir bir şekilde çalıştırmak, çoğu geliştiricinin zorlandığı yerdir.

Bu rehber, Laravel Reverb’i Deploynix üzerinde sunucu tahsisi ile üretim ölçeklenmesine kadar nasıl dağıtacağınızı gösterir ve çoğu ekibin karşılaştığı Nginx yapılandırma zorluklarına özel dikkat gösterir.

Laravel Reverb Nedir?

Laravel Reverb, PHP ile yazılmış yüksek performanslı bir WebSocket sunucusudur ve Laravel’in yayın sistemine yerel olarak entegre olur. Pusher veya Ably gibi üçüncü taraf hizmetlerin aksine, Reverb kendi altyapınızda çalışır. Verilerinizi, maliyetlerinizi ve ölçeklenmenizi kontrol edersiniz.

Reverb, kalıcı WebSocket bağlantılarını yönetir, bunları Laravel uygulamanız aracılığıyla kimlik doğrular ve Laravel Echo kullanarak ön uçta bağlı istemcilere olayları yayar. Redis pub/sub aracılığıyla yatay ölçeklemeyi destekler, bu da binlerce eşzamanlı bağlantıya sahip uygulamalar için uygundur.

Sunucu Mimarisi Kararları

Tahsis etmeden önce, Reverb’in altyapınıza nasıl uyduğuna karar verin.

Seçenek 1: Reverb uygulama sunucunuzda.

En basit yaklaşım. Reverb, Laravel uygulamanızla aynı sunucuda bir daemon olarak çalışır. Bu, birkaç yüz eşzamanlı WebSocket bağlantısına kadar küçük ve orta ölçekli uygulamalar için iyi çalışır.

Seçenek 2: Özel Reverb sunucusu.

Ağır gerçek zamanlı trafiğe sahip uygulamalar için Reverb’i özel bir sunucuda çalıştırın. Bu, WebSocket bağlantı yönetimini HTTP istek işleme işleminden izole eder ve WebSocket yükünün sayfa yükleme sürelerini etkilemesini önler.

Seçenek 3: Yük dengelemesi arkasında birden fazla Reverb sunucusu.

Yüksek ölçekli uygulamalar için bir Yük Dengeleyici arkasında birden fazla Reverb örneği çalıştırın. IP hash dengelemesi ile (WebSocket bağlantılarının aynı sunucuda kalmasını sağlamak için). Olaylar, bir Reverb sunucusunda yayınlandığında Redis pub/sub kullanarak, herhangi bir sunucuya bağlı istemcilere teslim edilir.

Gerçek zamanlı özelliklerle başlayan çoğu Laravel uygulaması için Seçenek 1 doğru seçimdir. Eşzamanlı bağlantı sayınız arttıkça Seçenek 2 veya 3’e geçiş yapabilirsiniz.

Deploynix Üzerinde Reverb’i Kurmak

Adım 1: Reverb’i Kurun

Henüz yapmadıysanız, Laravel uygulamanıza Reverb’i kurun:

composer require laravel/reverb
php artisan reverb:install

Bu, Reverb yapılandırma dosyasını yayınlar ve .env dosyanıza gerekli ortam değişkenlerini ekler.

Adım 2: Ortam Değişkenlerini Yapılandırın

Deploynix panonuzda, sitenize aşağıdaki ortam değişkenlerini ekleyin:

BROADCAST_CONNECTION=reverb

REVERB_APP_ID=your-app-id
REVERB_APP_KEY=your-app-key
REVERB_APP_SECRET=your-app-secret
REVERB_HOST=your-domain.com
REVERB_PORT=443
REVERB_SCHEME=https

VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"

REVERB_APP_ID, REVERB_APP_KEY ve REVERB_APP_SECRET için güvenli değerler oluşturun. Bunların herhangi bir dış hizmetle eşleşmesi gerekmez; bunlar Laravel uygulamanız ile Reverb sunucusu arasında kullanılan dahili kimlik bilgileri.

Adım 3: Reverb’i Bir Daemon Olarak Yapılandırın

Reverb, sürekli arka planda bir süreç olarak çalışmalıdır. Deploynix’de, panodan bir daemon ayarlayın:

  • Komut: php artisan reverb:start --host=0.0.0.0 --port=8080
  • Dizin: Sitenizin kök dizini
  • Kullanıcı: deploynix

Deploynix, Reverb’i Supervisor ile yönetir ve eğer çökme olursa otomatik olarak yeniden başlatır.

--host=0.0.0.0 bayrağı, Reverb’in tüm arayüzlerde dinlemesini sağlar (Nginx’in proxy kullanabilmesi için gereklidir). --port=8080, onu ayrıcalıksız bir portta tutar. Nginx, kamuya açık portu (443) yönetecek ve WebSocket bağlantılarını Reverb’e yönlendirecektir.

Adım 4: WebSocket Proxying için Nginx’i Yapılandırın

Bu, çoğu üretim Reverb dağıtımının yanlış gittiği yerdir. WebSocket bağlantıları, standart HTTP proxying’den farklı özel Nginx yapılandırması gerektirir.

Aşağıdakileri Nginx site yapılandırmanıza ekleyin. Deploynix sunucunuza SSH ile bağlanmanız ve Nginx yapılandırmasını düzenlemeniz gerekecek:

# WebSocket proxy for Reverb
location /app {
    proxy_http_version 1.1;
    proxy_set_header Host $http_host;
    proxy_set_header Scheme $scheme;
    proxy_set_header SERVER_PORT $server_port;
    proxy_set_header REMOTE_ADDR $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";

    proxy_pass http://127.0.0.1:8080;

    # WebSocket timeout settings
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
}

# Reverb API endpoint for broadcasting
location /apps {
    proxy_http_version 1.1;
    proxy_set_header Host $http_host;
    proxy_set_header Scheme $scheme;
    proxy_set_header SERVER_PORT $server_port;
    proxy_set_header REMOTE_ADDR $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass http://127.0.0.1:8080;
}

Kritik başlıklar açıklaması:

  • proxy_http_version 1.1: WebSocket, yükseltme eldiveni için HTTP/1.1 gerektirir.
  • Upgrade $http_upgrade ve Connection "Upgrade": Bu başlıklar Nginx’e HTTP’den WebSocket protokolüne geçiş yapmasını söyler.
  • proxy_read_timeout 60s: Nginx’in Reverb’den veri beklediği süredir. Bunu yapmazsanız, Nginx varsayılan zaman aşımı süresini (60 saniye) dolayısıyla bağlantılar kapatabilir.

Adım 5: Ön Uçta Laravel Echo’yu Yapılandırın

Laravel Echo ve Pusher JS kütüphanesini kurun (Reverb, Pusher protokolünü kullanır):

npm install laravel-echo pusher-js

JavaScript’inizde Echo’yu yapılandırın:

import Echo from 'laravel-echo';
import Pusher from 'pusher-js';

window.Pusher = Pusher;

window.Echo = new Echo({
    broadcaster: 'reverb',
    key: import.meta.env.VITE_REVERB_APP_KEY,
    wsHost: import.meta.env.VITE_REVERB_HOST,
    wsPort: import.meta.env.VITE_REVERB_PORT,
    wssPort: import.meta.env.VITE_REVERB_PORT,
    forceTLS: (import.meta.env.VITE_REVERB_SCHEME ?? 'https') === 'https',
    enabledTransports: ['ws', 'wss'],
});

Ön uç değişikliklerinden sonra, varlıklarınızı yeniden oluşturun. Deploynix üzerinde, dağıtım kancalarınıza npm run build ekleyerek bu süreci otomatikleştirebilirsiniz.

Nginx’in Arkasında Yaygın WebSocket Sorunları

Bağlantılar 60 Saniye Sonra Kesiliyor

Belirti: WebSocket bağlantıları başarıyla kurulur, ancak 60 saniye kadar bir süre sonra kesilir.

Sebep: Nginx’in proxy_read_timeout değeri, belirli bir süre içinde veri gelmediğinde bağlantıları kapatır. WebSocket bağlantıları uzun süreli ve uzun süre sessiz kalabilir.

Çözüm: Zaman aşımını artırın ve kalp atışları uygulayın:

proxy_read_timeout 3600s;
proxy_send_timeout 3600s;

Reverb, bağlantıları canlı tutmak için periyodik ping çerçeveleri gönderir. İstemcinin pinglere yanıt verdiğini doğrulayın. Laravel Echo bunu otomatik olarak yönetir.

502 Bad Gateway Hataları

Belirti: WebSocket bağlantıları bir 502 hatasıyla başarısız olur.

Sebep: Nginx, Reverb sürecine bağlanamaz. Ya Reverb çalışmıyordur ya da Nginx’in beklediği portta dinlemede değildir.

Çözüm:

  1. Reverb’in çalıştığını doğrulayın: Deploynix panosundaki daemon durumunu kontrol edin.
  2. Portun Reverb daemon komutunuz ile Nginx yapılandırmasını eşleştirdiğini onaylayın.
  3. Reverb kayıtlarını, başlatma hataları için kontrol edin.

Karışık İçerik Hataları

Belirti: Tarayıcı konsolu, karışık içerik uyarıları gösterir ve WebSocket bağlantıları başarısız olur.

Sebep: Sayfa HTTPS üzerinden yüklüdür ancak WebSocket bağlantısı ws:// yerine wss:// kullanmaya çalışmaktadır.

Çözüm: Reverb ortam değişkenlerinizin https şemasını ve 443 portunu kullandığından emin olun. Echo yapılandırmasındaki forceTLS: true seçeneği de ayarlanmalıdır.

Bağlantılar Yerel Olarak Çalışıyor Ancak Üretimde Değil

Belirti: Her şey php artisan reverb:start ile yerel olarak çalışıyor, ancak üretimde başarısız oluyor.

Sebep: Genellikle eksik Nginx proxy yapılandırması ve yanlış ortam değişkenlerinin bir kombinasyonudur.

Çözüm: Her katmanı doğrulayın:

  1. Reverb çalışıyor mu? Daemon’i kontrol edin.
  2. Nginx’in Reverb’e ulaşabildiğinden emin olun. Sunucudan curl http://127.0.0.1:8080 ile test edin.
  3. Nginx doğru proxy yapıyor mu? /app konum bloğunun var olup olmadığını kontrol edin.
  4. Ortam değişkenleri doğru mu? REVERB_HOST, REVERB_PORT ve REVERB_SCHEME‘yi doğrulayın.

Reverb’i Ölçeklendirme

Uygulamanız büyüdükçe, Reverb’i tek bir sunucunun ötesinde ölçeklendirmeniz gerekebilir.

Redis ile Yatay Ölçekleme

Birden fazla Reverb örneği arasında pub/sub iletişimi için Redis’i kullanacak şekilde Reverb’i yapılandırın:

config/reverb.php dosyanızda Redis pub/sub bağlantısının yapılandırıldığından emin olun. Ardından farklı sunucular üzerinden birden fazla Reverb örneği çalıştırın.

Bir Laravel olay yayınlandığında, Redis’e yayınlanır. Redis’e abone olan her Reverb örneği olayı alır ve bağlı istemcilerine iletir. Bu, Reverb Sunucu A’ya bağlı bir istemcinin, Uygulama Sunucu B tarafından işlenen bir isteğin yayınladığı olayları alabileceği anlamına gelir, yeter ki iki Reverb sunucusu aynı Redis örneğini paylaşsın.

Yük Dengeleyici Yapılandırması

Birden fazla Reverb sunucusunu Deploynix yük dengeleyicisi arkasında çalıştırıyorsanız, IP Hash yük dengelemesi yöntemini kullanın. Bu, bir istemcinin WebSocket bağlantısının her zaman aynı Reverb sunucusuna yönlendirilmesini sağlar ki bu da sürekli bağlantının düzgün çalışabilmesi için gereklidir.

Deploynix, Round Robin, En Az Bağlantı ve IP Hash yük dengeleme yöntemlerini destekler. WebSocket trafiği için doğru seçim IP Hash’tır.

Bağlantı Sınırları

Her Reverb örneği, esas olarak sunucunun belleği ve dosya tanımlayıcı sınırlarıyla sınırlı olarak, binlerce eşzamanlı bağlantıyı yönetebilir. Sunucunuzun kaynak kullanımını Deploynix’in gerçek zamanlı izleme panosundan izleyin ve sınırınıza yaklaştığınızda yatay olarak ölçeklendirin.

Gerekirse dosya tanımlayıcı sınırını artırın:

# In /etc/security/limits.conf
deploynix soft nofile 65536
deploynix hard nofile 65536

Bağlantı Sağlığını İzleme

Reverb dağıtımınızı izlemek için şunları takip edin:

  • Aktif WebSocket bağlantı sayısı.
  • Reverb sürecinin bellek kullanımı.
  • Redis pub/sub gecikmesi (eğer yatay ölçekleme kullanıyorsanız).
  • Nginx hata kaydınızdaki bağlantı hata oranları.

Deploynix’in sağlık uyarıları, CPU veya bellek eşiğinizi aştığında size bildirimde bulunabilir, böylece kullanıcılar performansın düşmesini yaşamadan proaktif olarak ölçeklendirebilirsiniz.

Laravel Uygulamanızdan Olay Yayınlama

Reverb yapılandırıldıktan sonra, Laravel uygulamanızdan olay yayınlamak standart Laravel yayınlama kalıbını izler:

class OrderShipped implements ShouldBroadcastNow
{
    public function __construct(
        public Order $order,
    ) {}

    public function broadcastOn(): array
    {
        return [
            new PrivateChannel('orders.' . $this->order->user_id),
        ];
    }

    public function broadcastWith(): array
    {
        return [
            'order_id' => $this->order->id,
            'status' => $this->order->status,
            'shipped_at' => $this->order->shipped_at->toISOString(),
        ];
    }
}

Hızlı teslimat için ShouldBroadcastNow kullanın veya ShouldBroadcast ile kuyruğunuzdan geçirin. Sohbet mesajları veya gerçek zamanlı bildirimler gibi zaman açısından hassas olaylar için, ShouldBroadcastNow‘nun genellikle doğru seçim olduğunu göreceksiniz.

Sonuç

Laravel Reverb, WebSocket yeteneklerini üçüncü taraf bağımlılıkları veya aylık ücretler olmadan Laravel’e getirir. Zorluk, kodda değil, üretim altyapısındadır: Nginx proxy yapılandırması, daemon yönetimi, SSL sonlandırma ve ölçekleme.

Deploynix, altyapı çalışmalarının çoğunu basit hale getirir. Pano üzerinden daemon yönetimi, Reverb’in güvenilir bir şekilde çalışmasını sağlar. SSL sertifikaları otomatik olarak sağlanır. Güvenlik duvarı kuralları iç Reverb portunu korur. Ve bir tek sunucuyu aştığınızda, Deploynix’in IP hash yönlendirmeli yük dengeleyicisi, net bir ölçeklendirme yolu sağlar.

Uygulama sunucunuzda Reverb ile başlayın, gerçek zamanlı özelliklerinizi çalışır hale getirin ve eşzamanlı bağlantı sayınız arttıkça altyapınızı ölçeklendirin. Bu rehberdeki yapılandırma ayrıntıları, hiçbir hata ayıklama gününe ihtiyaç duymadan sıfırdan üretim WebSocket’lerine geçmenizi sağlamalıdır.

Kaynak: Orijinal Makale

Contents
  • Laravel Reverb Nedir?
  • Sunucu Mimarisi Kararları
  • Deploynix Üzerinde Reverb’i Kurmak
    • Adım 1: Reverb’i Kurun
    • Adım 2: Ortam Değişkenlerini Yapılandırın
    • Adım 3: Reverb’i Bir Daemon Olarak Yapılandırın
    • Adım 4: WebSocket Proxying için Nginx’i Yapılandırın
    • Adım 5: Ön Uçta Laravel Echo’yu Yapılandırın
  • Nginx’in Arkasında Yaygın WebSocket Sorunları
    • Bağlantılar 60 Saniye Sonra Kesiliyor
    • 502 Bad Gateway Hataları
    • Karışık İçerik Hataları
    • Bağlantılar Yerel Olarak Çalışıyor Ancak Üretimde Değil
  • Reverb’i Ölçeklendirme
    • Redis ile Yatay Ölçekleme
    • Yük Dengeleyici Yapılandırması
    • Bağlantı Sınırları
    • Bağlantı Sağlığını İzleme
  • Laravel Uygulamanızdan Olay Yayınlama
  • Sonuç
Gizli Kalmış 5 Laravel 13 Özelliği: Bugün Kullanmayı Değebilir
Laravel RateLimiter ve bir yarış durumu
Laravel Octane Açıklaması: Ne Zaman Kullanılır, Nasıl Çalışır ve Nasıl Dağıtılır
Laravel Filament Yönetim Paneli: AI Uygulamaları için Token Maliyetleri, İstem Yönetimi ve Temsilci Denetim İzleri
Laravel Faturalama: Tek Paket, Her Ödeme Geçidi, İlk Günden İtibaren Çalışır
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Corsair’in yeni aracı ile Frame 4000D kasayı kişiselleştir!
Sonraki Makale Mario ve Star Fox Birleşimi 30 Yıl Önce Tahmin Edilmişti

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Araştırmacı, akıllı ampulü yasaklı kitap kütüphanesine dönüştürdü
Donanım
Self-hizmet Güvenlik Denetimi ve Sistem Sağlığı Araç Seti Oluşturdum: Filament PHP v3 için
Yazılım
En İyi 3D Tarayıcılar 2026 — Test Ettiğimiz En Başarılı Modeller
Donanım
Signal’ın Meredith Whittaker: AI sohbet botları dostunuz değil
Yapay Zeka
Nadir ASML Özel Monopoly oyunu sosyal medyada ticarete sunuldu – meraklı 2007 çalışan hediyesini High-NA EUV Lego setiyle değiştirdi
Donanım
Yeni AI odaklı arama motoru: In the Weights ile tanışın
Yapay Zeka
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?