Я бы передавал timestamp
с (или message_id
с) вместе с любыми сообщениями чата, которые серверный скрипт отправляет клиенту.Затем клиент просто запрашивает новые сообщения, а сервер отправляет только то, что ново.
Итак, представьте, что каждое сообщение чата имеет идентификатор.Я бы спроектировал chat.php
так, чтобы он принимал такой параметр:
chat.php?since=12345
12345
будет id
из последнего сообщения, которое видел клиент.chat.php
по сути делает что-то вроде:
SELECT * FROM chatmessages WHERE id > $since
... и передает обратно небольшую небольшую структуру данных (скажем, массив объектов, закодированных в JSON).
Итак,если нет новых сообщений чата, сервер просто передает обратно пустой массив.
Я не думаю, что вы можете быть более эффективным, чем это.
РЕДАКТИРОВАТЬ:
Я понимаю, что для этого нужно немного больше кодирования на стороне клиента.Вы больше не просто обновляете некоторый div со всей историей чата.Вам также понадобится обработчик для вашего вызова ajax, который перебирает результаты, и для каждого сообщения программно создайте div
для этой строки, а затем добавляете его в свой чат div
.