Как работает ВК?
У них очень интресная система чата. Я сам пытаюсь сделать что-то подобное, но пока мой алгоритм сыроват (готовый вариант - скрин в подписи)
Мой алгоритм: 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) Когда я отправляю сообщение, там опять "заставляют" совершить запрос-проверку, и после него соответственно выводятся новые сообщения.. ![]() И образуется такой дебильный вопрос: "как заставить удаленную страницу сделать запрос?" |
Ничего не понял, но для чатов в самый раз http://en.wikipedia.org/wiki/Server-sent_events
|
B@rmaley.e><e,
Похоже это то что мне надо, спасибо. P.S. B@rmaley.e><e, ты в вики случайно не работаешь?) Сколько ты помогаешь, всегда ссылки на википедию даешь) P.P.S. если у кого еще мысли есть выкладывайте) |
9xakep,
Чаты мон делать чисто скриптом - фреймом и перезаписью сообщений в теме |
Deff,
Но перезапись-то будет происходить с определенным интервалом, я прав? А мне именно надо без интревала. |
9xakep,
Интервал равен скорости буквопечати плюс нажатия на клик или энтер, вот по клику и отправка Пока ти не отправил сообщение о какой перезаписи мон говорить ? Рефрешь страницы стандартно для чата - раз в 3-5 секунд , если юзер Активен в Окне, И раз в 10 - если пассивен(курсор вне чата |
Deff,
то есть я правильно понимаю, что при обновлении iframe у меня, его можно будет обновить у другого юзера? Цитата:
|
Цитата:
контакт использует nodejs в чатах+сокеты либо длинный запрос. в фаирбаге посмотри внимательно на запросы контакта: твой ид,ид кому идёт и информация |
Уважаемый юзер. Сайт ВК существует уже около 10-ти лет и всё время обновляется. Они если вы помните тоже начинали с обновления страницы, нужно было всё время тыкать F5, чтобы увидеть сообщение. Просто у них целый офис веб-программистов и они всё время обновляют сайт. Мой вам совет: Начните с малого, а потом совершенствуйте своё творение до того, что вам нужно.
|
Цитата:
|
Часовой пояс GMT +3, время: 21:31. |