Как создать чат с AJAX, не делая тонны запросов (100 в минуту)

#javascript #php #jquery #ajax #chat

#javascript #php #jquery #ajax #Чат

Вопрос:

Всем привет, в настоящее время я работаю над живым чатом (для развлечения), и я нашел ajax. Это позволяет мне обновлять чат (с запросом каждую секунду) без обновления страницы. Все в порядке, но запросов слишком много (60-100 в минуту), и я хотел бы уменьшить это.

Я искал решение и нашел длительный опрос, но не понял его (по крайней мере, не понял, как его реализовать в моем коде) Я также вслух socket.io но я хочу остаться в php.

Вот мой код Js / Jquery :

 jQuery(document).ready(function($){


refreshMessages()
document.getElementById("send").focus();

$("#submit").on("click",function(e){

    e.preventDefault();

    var user = <?php echo json_encode($user); ?>;
    var token = user["token"];
    var username = user["username"];
    var message = $("#send").val();
    var file = $("#file").val();

    $('#send').val(null)

    $.ajax({ 
    url : 'add.php',
    type : 'POST',
    data : {"token" : token, "username" : username,"content" : message,"file" : file},
    
    success : function(data){
        
    },

    error : function(){
    }
    });
    setTimeout(updateScroll2,200)
})

function updateScroll(){
    document.getElementById("scroll_chat").scrollTop = document.getElementById("scroll_chat").scrollHeight;
}

function updateScroll2(){
    document.getElementById("scroll_chat").scrollTop = document.getElementById("scroll_chat").scrollHeight;
}


setTimeout(updateScroll,170)

function refreshMessages() {

    $.ajax({
        url: 'get.php',
        type: 'GET',
        dataType: 'html',
        success: function(data) {
            
        $('#scroll_chat').html(data); // data came back ok, so display it
        setTimeout(refreshMessages, 5000);
        },
        error: function() {
        $('#scroll_chat').prepend('Erreur');
        }
    });

}
 

});

add.php запускается при отправке формы сообщения и просто вставляет сообщение (дата, содержимое , автор и токен) в мою базу данных

get.php это запрос SELECT * к моей базе данных, и он повторяется в цикле foreach для каждого сообщения.

Итак, у меня есть запрос Ajax get, отправляемый каждую секунду, и это слишком много, у кого-нибудь есть идеи по этому поводу?

С наилучшими пожеланиями stackOverflowers, Nano

Комментарии:

1. ДЛИННЫЙ опрос — это то, что сервер долгое время держит открытым http-запрос. WebSockets — это путь для приложений чата. Для php существуют фреймворки websocket

2. @osekmedia вы прочитали вопрос? лол

3. Вы изучали веб-сокеты, используя PHP с помощью Ratchet?

4. здесь тоже рекомендую websocket. попробуйте выполнить поиск в sockjs, stomp

5. Спасибо, jejun, но мне нужно php-приложение, а не NodeJS ^^