Веб-сокет через Pusher в Laravel - звонок 4 раза

Я использую Pusher в своем проекте Laravel. Когда я регистрировал любую мочу, какашку, он транслировал эти события на все мои устройства: телефон, ноутбуки.

Веб-сокет через Pusher в Laravel - звонок 4 раза

У меня есть этот код.

   <script src = "https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script type = "text/javascript" src = "https://momentjs.com/downloads/moment.js"></script>
    <script src = "https://js.pusher.com/4.1/pusher.min.js"></script>
    <script>

    // Enable pusher logging - don't include this in production
    Pusher.logToConsole = true;

    var pusher = new Pusher('****', {
        cluster: 'us2'
    });

    var channel = pusher.subscribe('logEventChannel');
    channel.bind('logEvent', function(response) {



        var log       = response.data['json'];
        var method    = response.data['method'];

 
        console.info('\x1b[41m%s\x1b[0m',">>>>>>>>>>>>>>>>>>>>>>>>>DBEUG<<<<<<<<<<<<<<<<<<<<<<<<<");
        console.info('\x1b[41m%s\x1b[0m','method');
        console.info(method);
        console.info('\x1b[41m%s\x1b[0m',">>>>>>>>>>>>>>>>>>>>>>>>>DBEUG<<<<<<<<<<<<<<<<<<<<<<<<<");
        
                   
        console.info("SENT FROM BE", method , log);

        //====================================
        //              POST
        //====================================

        if (method == 'POST'){

            var type      = log.type;
            var id        = log.id;
            var babyId    = log.babyId;
            var updatedAt = log.updated_at;
            var timeAgo   = moment(updatedAt).fromNow();
            var time      = moment(updatedAt).format('hh:mm a');

            
            getLogMessages(type);
            getCount(type);
            shake('.badge-'+type,1);


            if (type == 'feed'){

            
                logAudit(babyId);

                blink(".timeLeft");
                blink(".nextFeed");

            }



            var row = `<tr id = "tr-${id}" data-type = "${type}"> <td > <a class = "btn btn-${type}" > <img class = "logIconSmall" src = "/assets/be/img/baby/${type}.png"/> </a> </td> <td> <a onclick = "showModal('${time}','${type}','${id}')" class = "btn btn-link"> ${time} </a> </td> <td></td> </tr>`; 

            $('.tbody-log').prepend(row);
            blink("#tr-"+id);

        } 

        //====================================
        //              PUT
        //====================================

        if (method == 'PUT'){


            var type      = log.type;
            var id        = log.id;
            var babyId    = log.babyId;
            var updatedAt = log.updated_at;
            var timeAgo   = moment(updatedAt).fromNow();
            var time      = moment(updatedAt).format('hh:mm a');

            getLogMessages(type);
            getCount(type);
            shake('.badge-'+type,1);


            if (type == 'feed'){
            
                logAudit(babyId);
                blink(".timeLeft");
                blink(".nextFeed");
            }

            $("#tr-"+id).remove();  

            var row = `<tr id = "tr-${id}" data-type = "${type}"> <td > <a class = "btn btn-${type}" > <img class = "logIconSmall" src = "/assets/be/img/baby/${type}.png"/> </a> </td> <td> <a onclick = "showModal('${time}','${type}','${id}')" class = "btn btn-link"> ${time} </a> </td> <td></td> </tr>`;



            $('.tbody-log').prepend(row);
            blink("#tr-"+id);


        } 

        //====================================
        //              DELETE
        //====================================

        if (method == 'DELETE'){

            var id     = log.logId;
            var type   = log.type;
            var babyId = log.babyId;


            if (type == 'feed'){
                
                logAudit(babyId);
                blink(".timeLeft");
                blink(".nextFeed");
            }

            getLogMessages(type);
            getCount(type);
            shake('.badge-'+type,1);
            blink("#tr-"+id);

            $("#tr-"+id)
            .animate({ backgroundColor: "#ef004810" }, 500 )
            .animate({ backgroundColor: "black"}, 500 )
            .fadeOut(100);
        }






        audit(babyId, id, type, method);
        getNextFeed(babyId);

    });

</script>

аудит fn

function audit(babyId, logId, type, method) {

    var data    = {};
    data.babyId = babyId;
    data.logId  = logId;
    data.type   = type;
    data.method = method;
    
    console.info('SENT from FE',data);

    $.ajax({
        method: 'POST',
        url: '/baby/audit',
        crossDomain: true,
        contentType: false,
        headers: {
            'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('value'),
            "Accept": "application/json",
            "Content-Type": "application/x-www-form-urlencoded",
            "Cache-Control": "no-cache"
        },
        data: data,
        success: function(response){
            console.info('SUCCESS response',response);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.info(JSON.stringify(jqXHR));
            console.info("AJAX error: " + textStatus + ' : ' + errorThrown);
        }
    });

}

запустит этот контроллер fn

public function storeAudit()
{

    $inputs = Request::all();
    $logId  = $inputs['logId'];
    $babyId = $inputs['babyId'];
    $type   = $inputs['type'];
    $method = $inputs['method'];

    $baby   = Baby::where('id',$babyId)->first();

    if ($baby){

        $log         = new BabyLogAudits;
        $log->type   = $type;
        $log->method = $method;
        $log->babyId = intval($babyId);
        $log->logId  = intval($logId);
        $log->note   = Visitor::get_client_ip();
        $log->save();

    }

    return response()->json($log,200);


}

Это работает, но каждый раз, когда я что-то делал, моя функция аудита вызывалась 4 раза.

Результат :

https://www.bunlongheng.com/baby/1/audit?code=rithys4k&type=all

Веб-сокет через Pusher в Laravel - звонок 4 раза

Все вроде звонят только 1 раз ... почему запускалось 4 раза.

Почему ??

Это потому, что у меня дома 4 устройства, которые переходят по одной и той же ссылке?

Редактировать

Console.log показывает только один раз. Смотрите красное знамя:

Веб-сокет через Pusher в Laravel - звонок 4 раза

Публикация с logid 2812 происходит 6 раз, а удаление для того же logid происходит 5 раз. а затем сообщение с логическим идентификатором 2822 происходит 5 раз, а удаление для того же логического идентификатора происходит 4 раза. Я не знаю, сможете ли вы найти связь между тем, что может помочь, но, пожалуйста, поделитесь журналами консоли, чтобы я мог попытаться понять, в чем проблема с логикой, которая вызывает несколько журналов консоли. обратите внимание, что logid одинаковы для каждой новой операции.

Mohamed Bdr 30.03.2021 22:09

Console.log показывает только один раз. Смотрите красное знамя:! [] (i.imgur.com/vqBhhJU.png)

cyber8200 30.03.2021 23:04

Это странно. Я не знаю, откуда берется петля. Кроме того, вы знаете, как скрыть всю консоль-толкатель в моем console.info? Кажется, слишком много информации, и я запомнил мои места в консоли :(

cyber8200 30.03.2021 23:06

Вы установили Pusher.logToConsole = true; - установите значение false, чтобы не загромождать console.info.

doydoy 01.04.2021 19:28
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
31
0

Другие вопросы по теме