#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 ^^