Comments 46
На работе тоже ставилась такая задача — выбрали long polling, потому что:
1. работает во всех браузерах
2. прост в реализации
1. работает во всех браузерах
2. прост в реализации
+3
Если вы посмотрите на дату стандарта XMLHttpRequest, то увидите что ему уже почти 6 лет. Stream клиенты основаны на нем же. Для меня остается загадкой, почему нет поддержки stream технологии в JQuery.
+1
Я практик — перед использованием технологии я делаю прототип, проверяю — будет ли работать.
Так вот на IE 7,8 не шибко что то работает. Поэтому надёжней использовать long polling что бы не городить костылей для каждого браузера, когда их и так хватает.
Так вот на IE 7,8 не шибко что то работает. Поэтому надёжней использовать long polling что бы не городить костылей для каждого браузера, когда их и так хватает.
+2
Небольшое дополнение: keep-alive может игнорироваться браузерами по их собственному внутреннему усмотрению. Потому, время ожидания стоит ограничить каким-то разумным промежутком и при отсутствии обновления присылать nop по истечению таймаута.
+5
Прекрасная статья, спасибо
0
А как проверили что long polling сейчас работает с актуальными прокси? По ситуации на несколько лет назад, был ряд проблем — «умные» прокси, не увидив от сервера ответ в течении нескольких секунд рвали TCP соединение вне зависимости от keep alive «в целях экономии ресурсов». Как бы выяснить текущую ситуацию…
+2
На текущий момент работает(по крайней мере: ISA server 2006, Traffic Inspector, Squid).
+2
Я имею в виду глобально в интернете, для целевой аудитории. Понятное дело что в лабораторных условиях на каких-то конфигурациях работает все что угодно. А в реальном мире — злобные провайдеры, непонятно какие и непонятно как настроенные прокси, кэширование там где не просят и прочие радости дикого интернетостроени :).
0
Если что-нибудь всплывет, то я сообщу. У данного приложения не очень высокий круг пользователей(теперь будет что оттестировать на работе получше).
+2
Я не могу понять, откуда ростут ноги у дурацкой привычки выполнять интервал через eval вместо ссылки на фунцию?:
intervalId = setInterval ( "requestUpdate()", 1000 );
// =>
intervalId = setInterval ( requestUpdate, 1000 );
+12
Из PHP? До недавнего времени только синтаксис аналогичный первому работал, правда скобки не нужны.
0
UFO just landed and posted this here
Только сегодня наткнулся на сайт о том, какие самозванцы w3schools (всегда этот сайт терпеть не мог — бессмыслен, ошибочен, поверхностен)
+2
но в статье нет двойных кавычек (в любом случае сейчас):
что меня удивило, ибо функция выполняется 1 раз и не возвращает другую функцию!
intervalId = setInterval ( requestUpdate(), 1000 );
что меня удивило, ибо функция выполняется 1 раз и не возвращает другую функцию!
0
>> WebSockets я исключил сразу, потому как не у всех клиентов могут быть установлены современные браузеры
socket.io? Красиво, удобно…
socket.io? Красиво, удобно…
+3
Но ещё пока не стандарт де-факто, хотя нет сомнения будущее у него прекрасное
0
что значит стандарт? пока это одно из лучших и самое кроссплатформенное решение. еще есть SockJS
0
Повторюсь, long polling был выбран как раз таки потому, что он работает везде.
P.S. Заставьте работать сокеты на IE8.
P.S. Заставьте работать сокеты на IE8.
-3
для этого есть flash fallback. работает отлично.
0
flashblock?
0
и что? тогда сбрасываеться на поллинг. Но если юзер сам себе буратино то я ему не помощник. А если обрубан кабель интернета то что? Почему сервис должен все делать для странных юзеров?
-1
потому что они могут нести профит)
0
обычно это замороченные люди которые никогда никому не платят «в этих ваших интернетах».
-1
Почему так категорично? У меня нетбук не тянет много флэша, так что flashblock для меня спасение. И почему я замороченный человек? И почему я никому ничего не плачу «в этих наших интернетах»?
+1
Я не имею ввиду лично Вас. Хотя если для вас компьютер это инструмент и вы еще не позаботились о нормальном инструменте — вполне возможно не стоит оптимизировать.
Еще раз — чем больше сервисов будет всеравно работать на самом убогом железе и старых браузерах — тем меньше будет стимулов к нормальной работе в нормальных системах. тоько так. Я лично не хочу сам себе рыть яму поддерживая устаревшие системы.
Еще раз — чем больше сервисов будет всеравно работать на самом убогом железе и старых браузерах — тем меньше будет стимулов к нормальной работе в нормальных системах. тоько так. Я лично не хочу сам себе рыть яму поддерживая устаревшие системы.
+1
Наверное зря влез, просто хотел сказать что пользователи flashblock не замороченные люди. Для меня вопрос не актуален, так как браузер постоянно обновляется.
+1
У меня современный, мощный компьютер и работает быстро. Но когда включен flashblock, он работает еще быстрее, намного быстрее. И я не «сам себе буратино», я просто люблю когда все работает очень быстро, поэтому у меня включен flashblock.
0
и что значит не тянет флеш. Анимация баннеры игры — это одно. Флеш сокет умешаеться на 50 строках ас2 и работает практически незаметно
0
Просто удобно. Кто умеет тому сокеты, кто нет — тем тот же лонг пулинг
0
UFO just landed and posted this here
Кстати, на счёт картинок. Имхо, здесь они выглядят значительно лучше и понятнее:
http://sontan.name/blog/view/~real-time-web-and-comet
http://sontan.name/blog/view/~real-time-web-and-comet
+3
Советую обратить внимание на спецификацию Servlet 3.0:
официальная документация
блоги Oracle
Tomcat javadoc
официальная документация
блоги Oracle
Tomcat javadoc
0
Насколько я понимаю, со stream есть проблемма с тем, что в http нету flush-а и мелкие пакеты будут часто не доходить сразу, кэшируясь в группы по дороге на всяких маршрутизаторах. И единственный способ это решить — закрывать соединение сразу после отправки пакета.
0
Sign up to leave a comment.
Асинхронный обмен данными поверх HTTP