Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba,
API üzerinden total kontrolü yapıyorum. Eğer sayı session'a kayıt ettiğimden büyükse belli bir kaç JS kodu çalıştırıyorum.
Fakat şöyle bir sorun var. Kayıt girildi 14 olan total 15 oldu ve kod çalıştı. Çalışan kodda da o kullanıcı hakkında bilgi de alıyorum. Diyelim ki aynı anda 3 giriş oldu. 14 olan total 17 oldu. Ama JS kodu bir kere çekildi. Diğer kullanıcıların bilgilerini alamadım sadece bir tanesi. Nasıl kuyruğa alabilirim? Umarım anlatabilmişimdir 🙂

PHP kod örneği

public function fireworkCelebration(Request $request)
    {
        if (!$request->session()->has('token')) {
            return response()->json('Ciddi misin?', 500);
        }

        $siteUrl = Config::get('app.site_url');

        $client = new \GuzzleHttp\Client();

        $guzzle = $client->request('GET', $siteUrl.'SalesBoard', [
            'headers' => [
                'content-type' => 'application/json',
                'Authorization' => base64_encode('admin'.':'.'XxX')
            ]
        ]);

        if($guzzle->getStatusCode() === 200) {
            $crm = \GuzzleHttp\json_decode($guzzle->getBody()->getContents(), true);

            if (Session::has('total')) {
                $total = $request->session()->get('total');

                if($crm['total'] > $total) {
                    $request->session()->put('total', $crm['total']);
                    return response()->json(false);
                }else {
                    return response()->json(true);
                }
            }else {
                $request->session()->put('total', $crm['total']);
            }
        }

        return false;
    }

JS kod örneği

function fireworkCelebration() {
            $.ajax({
                url: '/get-firework-celebration',
                type: 'get',
                success: function(response) {
                    if(response === false) {
                        sound.play();
                        $('#canvas').css('display', 'block');
                        $('#app').css('opacity', 0.2);
                    }
                }
            });
        }

 setInterval(fireworkCelebration, 15000);
  • İstemci üzerinden sunucuya ulaştığınız için böyle oluyor. Tam tersi şekilde sunucu içerisinden toplam arttı şeklinde istemciye istek göndermeniz lazım. Kayıt girişi olunca real-time havai fişek patlatacak vs. Yani broadcasting https://laravel.com/docs/6.x/broadcasting

    Sizin yol ile gidilecekse belki şöyle yapılabilir, kayıt girildi dediğiniz işlemi bir tabloda satır satır tutun, her satır bir girdi, bir kullanıcı vs olsun. İçinde istediğiniz alanları tutun. Her bir satırın da seen_at gibi bir alanda görüldü tarihini tutun. Javascript ile istek atıldığında seen_at değeri boş olanları alın, alınca bunların seen_at tarihlerini istek tarihi ile güncelleyin.

Kimse bu konu hakkında fikir yürütemiyor galiba ya da ben anlatamadım 😃 eğer ikincisiyle belirtirseniz tekrar daha açıklayıcı şekilde anlatmaya çalışırım

İstemci üzerinden sunucuya ulaştığınız için böyle oluyor. Tam tersi şekilde sunucu içerisinden toplam arttı şeklinde istemciye istek göndermeniz lazım. Kayıt girişi olunca real-time havai fişek patlatacak vs. Yani broadcasting https://laravel.com/docs/6.x/broadcasting

Sizin yol ile gidilecekse belki şöyle yapılabilir, kayıt girildi dediğiniz işlemi bir tabloda satır satır tutun, her satır bir girdi, bir kullanıcı vs olsun. İçinde istediğiniz alanları tutun. Her bir satırın da seen_at gibi bir alanda görüldü tarihini tutun. Javascript ile istek atıldığında seen_at değeri boş olanları alın, alınca bunların seen_at tarihlerini istek tarihi ile güncelleyin.