2013-10-02 10 views
0
setInterval(function{ 

//send ajax request and update chat window 


}, 1000) 

есть ли лучший способ обновить чат новыми сообщениями? это правильный способ обновления чата с помощью setInterval?Как обновить окно чата с новыми сообщениями

+3

Вы также можете заглянуть в веб-порты, но помимо этого да, ajax-запрос с регулярным интервалом - лучший способ обновить чат. –

+0

[События, отправленные сервером] (http://www.html5rocks.com/en/tutorials/eventsource/basics/) могут работать и на вас. –

ответ

2

Есть два основных варианта (или более указанного популярных способов)

Натяжение

Первый дергает, это то, что вы делаете. Каждые x (милли) секунд вы проверяете, изменилась ли конфигурация сервера.

Это способ html4 (исключая вспышку и т. Д., Поэтому html/js). Для php не лучший способ, потому что вы делаете для пользователя sinle множество подключений в минуту (в вашем примере кода не менее 60 подключений в секунду).

Раздвигая

Следующая толкает. Это больше похоже на HTML5. Это реализуется через websockets. То, что происходит, - это «перечисление» соединения и ожидание обновления. Когда он будет обновлен, он будет тригером события.

Это не очень удобно реализовывать на PHP, потому что вам нужно соединение с константой, и ваш сервер будет переполнен в кратчайшие сроки, потому что PHP не может подключать соединения к фону (например, Java может, если я прав).

Я сделал личное приложение для чата и использовал pusher. Он работает отлично. Я использовал только бесплатную версию, поэтому не знаю, насколько это дорого.

0

Достаточно да, одна небольшая настройка, а не инкапсуляция вызова AJAX внутри интервала (это может привести к объединению невозвращенных запросов, если что-то плохое на сервере), вы должны выбросить setTimeout в обратный вызов AJAX для создания рекурсивный вызов. Рассмотрим:

function callAjax() { 
    $.ajax(options).done(function() { 
     //do your response 
     setTimeout(callAjax, 2000); 
    }); 
} 

callAjax(); 
Смежные вопросы