jQuery Long Polling (С серверной частью PHP)

У меня тут какой-то кошмар, так что любая помощь будет с благодарностью! Во-первых, я объясню, что я пытаюсь сделать:

Я пытаюсь реализовать систему, как описано здесь:https://stackoverflow.com/a/1086448/1034392на моем локальном сервере MAMP с использованием инфраструктуры Yii. У меня есть функция, которая проверяет, есть ли новые уведомления в БД -, если да, то она их анализирует и кодирует json. У меня эта функция вызывается в цикле while каждые 5 секунд.

Итак, :переход к /user/unreadNotifications вызывает следующее

    Yii::log('test'); // to check it's getting called  

    $this->layout=false;

    header('Content-Type: application/json');

    // LONG POLLING 
    while (Yii::app()->user->getNotifications() == null) {
        sleep(5);
    }

    echo Yii::app()->user->getNotifications(); // prints out json if new notification

    Yii::app()->end();

    return;

Это отлично работает -перешел по ссылке в браузере и проверил ответ json -все хорошо.

Затем я пробовал всевозможные вещи jQuery, чтобы заставить его работать... ЕДИНСТВЕННЫЙ способ, который я нашел для работы, - это использовать $.ajaxс типом POST, но ТОЛЬКО когда есть ожидающее уведомление (, поэтому возвращается какой-то json ). $.getили $.postполучает сообщение «прервано» (, отображаемое в firebug ), но URL-адрес называется (, потому что я вижу, что файл журнала обновлен)-странный.

Моя исходная установка с использованием $.get— :

        

        

. Это просто "прервано" по какой-то причине. Я пробовал с «jsonp», хотя это не запрос CORS.но это тоже не работает.

Кажется, с этим никуда не деться! Кто-нибудь может скинуться?

Большое спасибо

8
задан Community 23 May 2017 в 12:33
поделиться