setInterval(function{
//send ajax request and update chat window
}, 1000)
есть ли лучший способ обновить чат новыми сообщениями? это правильный способ обновления чата с помощью setInterval?Как обновить окно чата с новыми сообщениями
setInterval(function{
//send ajax request and update chat window
}, 1000)
есть ли лучший способ обновить чат новыми сообщениями? это правильный способ обновления чата с помощью setInterval?Как обновить окно чата с новыми сообщениями
Есть два основных варианта (или более указанного популярных способов)
Натяжение
Первый дергает, это то, что вы делаете. Каждые x (милли) секунд вы проверяете, изменилась ли конфигурация сервера.
Это способ html4 (исключая вспышку и т. Д., Поэтому html/js). Для php не лучший способ, потому что вы делаете для пользователя sinle множество подключений в минуту (в вашем примере кода не менее 60 подключений в секунду).
Раздвигая
Следующая толкает. Это больше похоже на HTML5. Это реализуется через websockets. То, что происходит, - это «перечисление» соединения и ожидание обновления. Когда он будет обновлен, он будет тригером события.
Это не очень удобно реализовывать на PHP, потому что вам нужно соединение с константой, и ваш сервер будет переполнен в кратчайшие сроки, потому что PHP не может подключать соединения к фону (например, Java может, если я прав).
Я сделал личное приложение для чата и использовал pusher. Он работает отлично. Я использовал только бесплатную версию, поэтому не знаю, насколько это дорого.
Достаточно да, одна небольшая настройка, а не инкапсуляция вызова AJAX внутри интервала (это может привести к объединению невозвращенных запросов, если что-то плохое на сервере), вы должны выбросить setTimeout
в обратный вызов AJAX для создания рекурсивный вызов. Рассмотрим:
function callAjax() {
$.ajax(options).done(function() {
//do your response
setTimeout(callAjax, 2000);
});
}
callAjax();
Вы также можете заглянуть в веб-порты, но помимо этого да, ajax-запрос с регулярным интервалом - лучший способ обновить чат. –
[События, отправленные сервером] (http://www.html5rocks.com/en/tutorials/eventsource/basics/) могут работать и на вас. –