Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2012, 13:10
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Как работает ВК?
У них очень интресная система чата. Я сам пытаюсь сделать что-то подобное, но пока мой алгоритм сыроват (готовый вариант - скрин в подписи)


Мой алгоритм:

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) Когда я отправляю сообщение, там опять "заставляют" совершить запрос-проверку, и после него соответственно выводятся новые сообщения..



И образуется такой дебильный вопрос: "как заставить удаленную страницу сделать запрос?"
__________________
оляля, ололо

Последний раз редактировалось 9xakep, 12.06.2012 в 13:15.
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2012, 13:22
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Ничего не понял, но для чатов в самый раз http://en.wikipedia.org/wiki/Server-sent_events
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2012, 13:51
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

B@rmaley.e><e,
Похоже это то что мне надо, спасибо.
P.S. B@rmaley.e><e, ты в вики случайно не работаешь?) Сколько ты помогаешь, всегда ссылки на википедию даешь)
P.P.S. если у кого еще мысли есть выкладывайте)
__________________
оляля, ололо
Ответить с цитированием
  #4 (permalink)  
Старый 12.06.2012, 15:16
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

9xakep,
Чаты мон делать чисто скриптом - фреймом и перезаписью сообщений в теме
Ответить с цитированием
  #5 (permalink)  
Старый 12.06.2012, 16:50
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Deff,
Но перезапись-то будет происходить с определенным интервалом, я прав? А мне именно надо без интревала.
__________________
оляля, ололо
Ответить с цитированием
  #6 (permalink)  
Старый 12.06.2012, 17:22
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

9xakep,
Интервал равен скорости буквопечати плюс нажатия на клик или энтер, вот по клику и отправка

Пока ти не отправил сообщение о какой перезаписи мон говорить ?
Рефрешь страницы стандартно для чата - раз в 3-5 секунд , если юзер Активен в Окне, И раз в 10 - если пассивен(курсор вне чата

Последний раз редактировалось Deff, 12.06.2012 в 17:31.
Ответить с цитированием
  #7 (permalink)  
Старый 12.06.2012, 21:37
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Deff,
то есть я правильно понимаю, что при обновлении iframe у меня, его можно будет обновить у другого юзера?
Сообщение от Deff
Рефрешь страницы стандартно для чата - раз в 3-5 секунд , если юзер Активен в Окне, И раз в 10 - если пассивен(курсор вне чата
Воот...ты либо говоришь про регулярное обновление, либо я тебя не понимаю...мне надо именно без обновления, без регулярных запросов итд
__________________
оляля, ололо
Ответить с цитированием
  #8 (permalink)  
Старый 12.06.2012, 22:52
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от 9xakep
И образуется такой дебильный вопрос: "как заставить удаленную страницу сделать запрос?"
сокеты, если без постоянных запросов -пришло что то на сервер -отдалось подписанным на это пользователям .
контакт использует nodejs в чатах+сокеты либо длинный запрос.
в фаирбаге посмотри внимательно на запросы контакта:
твой ид,ид кому идёт и информация

Последний раз редактировалось dmitriymar, 12.06.2012 в 22:58.
Ответить с цитированием
  #9 (permalink)  
Старый 13.06.2012, 10:40
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

Уважаемый юзер. Сайт ВК существует уже около 10-ти лет и всё время обновляется. Они если вы помните тоже начинали с обновления страницы, нужно было всё время тыкать F5, чтобы увидеть сообщение. Просто у них целый офис веб-программистов и они всё время обновляют сайт. Мой вам совет: Начните с малого, а потом совершенствуйте своё творение до того, что вам нужно.
Ответить с цитированием
  #10 (permalink)  
Старый 13.06.2012, 15:35
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Джэксон
начинали с обновления страницы, нужно было всё время тыкать F5, чтобы увидеть сообщение. Просто у них целый офис веб-программистов и они всё время обновляют сайт.
Неужели целый офис сидит и обновляет страницы?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как научиться думать на javascript ? samuel Оффтопик 31 03.09.2013 02:10
При активации Disqus, не работает Nivo slider, как решить проблему? pinkfloyd Общие вопросы Javascript 0 30.05.2011 15:29
InnerHTML почему-то работает не так, как хотелось бы. помогите Dima00782 Общие вопросы Javascript 2 13.06.2010 21:17
Как работает обработчик onMouseMove() bayah Общие вопросы Javascript 3 29.04.2010 14:36
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20