Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2011, 09:59
Кандидат Javascript-наук
Отправить личное сообщение для Maxman Посмотреть профиль Найти все сообщения от Maxman
 
Регистрация: 18.06.2010
Сообщений: 122

Вопрос по long-polling
Прочитал недавно статью про долгие опросы, казалось, вроде всё понятно, да вот реализовать нормально не могу...
Сказано: Соединение не закрывается сервером пока не появится событие
Так как отследить этот момент, когда возникает событие? К примеру, у меня есть данные в БД, и мне нужно отправлять ответ только если они обновились, так значит надо во время интервала между запросами клиента, постоянно отправлять SQL-запрос выборки в базу, и проверять там изменение?
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2011, 10:13
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Maxman, ответ на твой вопрос сильно зависит от используемой СУБД и серверного языка...
Но как вариант, узнать о изменениях без "длительного ожидания ответа" можно например так:
- на сервер отсылается запрос "Есть ли какие-то изменения" а в ответ получаешь некий идентификатор твоего запроса
- далее шлются запросы типа "как там мой запрос с таким-то идентификатором"
- если запрос готов - можно запрашивать его результаты
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2011, 14:39
Кандидат Javascript-наук
Отправить личное сообщение для Maxman Посмотреть профиль Найти все сообщения от Maxman
 
Регистрация: 18.06.2010
Сообщений: 122

ksa, СУБД - MySQL, язык - PHP. Но, по моему вы какой-то усложнённый вариант предлагаете... Какой смысл, если это короткий опрос получается, так можно и сразу результат спрашивать. Цель в том, чтобы уменьшить число запросов от клиента к серверу. Но как на PHP ловить изменения в базе за какой-то промежуток времени, кроме как вызывать sleep() в цикле или рекурсии, и постоянно проверять базу? Или это так и делается?
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2011, 14:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Сообщение от Maxman
Какой смысл, если это короткий опрос получается, так можно и сразу результат спрашивать.
Смысл если запрос как раз долгий

Сообщение от Maxman
СУБД - MySQL, язык - PHP.
Ни с тем, ни с тем я не работал...

Инициатором проверки может быть как клиент... Так и серверный процесс (я использую термины СУБД Cache)...
Вопрос в том - какую задачу ты пытаешся решить?

Последний раз редактировалось ksa, 07.12.2011 в 14:54.
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2011, 15:35
Кандидат Javascript-наук
Отправить личное сообщение для Maxman Посмотреть профиль Найти все сообщения от Maxman
 
Регистрация: 18.06.2010
Сообщений: 122

Сообщение от ksa Посмотреть сообщение
Вопрос в том - какую задачу ты пытаешся решить?
Пытаюсь переделать свой чат, чтобы сообщения приходили мгновенно без обновления страницы.
Ответить с цитированием
  #6 (permalink)  
Старый 07.12.2011, 15:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Для чата таки инициатором "обновления" должен быть клиент...
Сервер может делать некую "пред подготовку". Например в специальной табличке держать ссылки на сообщения за некий промежуток времени...
Т.е. клиент будет обращаться не ко всей табличке сообщений с поиском нового... А к той маленькой. Там записей меньше - ответ-список получишь быстрее...

Последний раз редактировалось ksa, 07.12.2011 в 21:06.
Ответить с цитированием
  #7 (permalink)  
Старый 09.12.2011, 03:49
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Maxman Посмотреть сообщение
Пытаюсь переделать свой чат, чтобы сообщения приходили мгновенно без обновления страницы.
Последняя из технологий на смену long-polling - это веб-сокеты. Особенно активно продвигается Гуглом. Многие пророчили ей большое будущее, потому что обмен информацией идет по инициативе сервера, а не клиента (!). Но... обнаружились проблемы в безопасности этого механизма... Хотя очень заманчиво. Рискнёте?
http://ru.wikipedia.org/wiki/WebSocket
Ответить с цитированием
  #8 (permalink)  
Старый 09.12.2011, 17:17
Кандидат Javascript-наук
Отправить личное сообщение для Maxman Посмотреть профиль Найти все сообщения от Maxman
 
Регистрация: 18.06.2010
Сообщений: 122

Сообщение от Маэстро Посмотреть сообщение
Рискнёте?
Если честно, пока как-то нет желания их использовать, тем более если в ИЕ не поддерживаются...
Кстати, изначально я хотел сделать сокетами через флэш-объект, но всё-же решил остановиться на поллинге)

Последний раз редактировалось Maxman, 09.12.2011 в 17:25.
Ответить с цитированием
  #9 (permalink)  
Старый 09.12.2011, 18:01
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Maxman Посмотреть сообщение
изначально я хотел сделать сокетами через флэш-объект)
А какое у Вас ориентировочное количество одновременных коннектов к серверу? Связь через флэш довольно сильно зависит от того, какая серверная часть. Я пришел к выводу, что система получается монстровая, при этом при инициализации нового подключения жрётся много ресурсов и тратится до нескольких секунд времени (опыт эксплуатации на java).
Ответить с цитированием
  #10 (permalink)  
Старый 09.12.2011, 21:38
Кандидат Javascript-наук
Отправить личное сообщение для Maxman Посмотреть профиль Найти все сообщения от Maxman
 
Регистрация: 18.06.2010
Сообщений: 122

Сообщение от Маэстро Посмотреть сообщение
А какое у Вас ориентировочное количество одновременных коннектов к серверу?
Ну на самом деле небольшое, но хотелось бы всё равно сделать нормально, т.е. подразумевая что там много будет много народу сидеть онлайн
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Вопрос по замыканиям Goodfella Общие вопросы Javascript 20 09.03.2011 01:21
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50
вопрос по long poll megaswin AJAX и COMET 2 27.05.2008 09:20