У них очень интресная система чата. Я сам пытаюсь сделать что-то подобное, но пока мой алгоритм сыроват (готовый вариант - скрин в подписи)
Мой алгоритм:
0) При заходе отправляем запрос и берем, и берем последнее сообщение в БД
1) При отправке сообщения, я добавляю его в БД
2) У других юзверей каждые 10 секунд отпрвляется ajax запрос, который проверяет, если id последнего сообщение > id в пункте 0, то добавить все сообщения в массив
3) после я этот массив с помощью json привожу к номарльному виду, и отправляю в js, где ответ eval'иться, и получается обычный массив вида:
[
{
autor:'9xakep',
message: 'Привет'
},
{
autor:'9xakep',
message:'Как дела?'
}
]
4) Добавляю всю инфу в окно чата(опять же смотреть скрин в подписи)
Естественно, что вся эта система работает хорошо, если я это тестю на локалке, да и еще с самим собой, а представьте что будет если например 1000 юзеров, будут каждые 10 секунд теребить БД. Хотя...с 1000 еще может и ничего не будет, но система не оптимальна на мой счет. Тем более, в вк, например, сообщения отправляются мгновенно, а у меня нажно ждать от 1-10 секунд (как повезет)
VK:
Мне не понятно, как работает же вк:
Небольшая предыстория:
У вк есть 2 основных запроса, один идет с интервалом в 25, и начинается сразу же как закончиться(назовем его запрос проверки, http://s019.radikal.ru/i643/1206/cd/7201103a7161.png), а второй говорит, что ты в онлайн (http://s019.radikal.ru/i607/1206/23/31cb51d4d33c.png)
Например, я начинаю печатать:
1)
На странице собеседника сразу появляется запрос-проверка, который "говорит", что я печатаю
2) Когда я отправляю сообщение, там опять "заставляют" совершить запрос-проверку, и после него соответственно выводятся новые сообщения..
И образуется такой дебильный вопрос: "как заставить удаленную страницу сделать запрос?"