|
|
|
Reverse AJAX, несколько окон
|
|||
|---|---|---|---|
|
#18+
У меня возникла офигенная проблема. Я использую постоянное AJAX соединение с сервером, которое позволяет мгновенно обновлять данные в браузере (COMET, Reverse AJAX). Всё работает, но обнаружился баг. Но как только клиент открывает новое окно, в старом соединение обрывается и оно перестаёт работать. Проблема в том что на сервере я не могу узнать открыто новое окно или клиент обновил старое, поэтому убиваю старый коннекшен. Думал решить добавив session_id, window_id в строку параметров, но это тоже не работает, url то получаются одинаковые вне зависимость в новом или старом окне я открываю его :). Корень проблемы в том что на сервере по запросу get я не могу узнать идёт он из старого окна или из нового. Может быть существует какое-то решение этого вопроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 15:55 |
|
||
|
Reverse AJAX, несколько окон
|
|||
|---|---|---|---|
|
#18+
Теоретически, я могу узнать о том новое окно или старое при получении GET запроса проверив сохранилось AJAX соединение или нет. Если сохранилось - значит новое окно открыто, если разорвано - то старое. Но это тоже хз, если браузер перед тем как выполнить GET не закроет AJAX соединение это работать не будет. И вроде таких правил нету, в каком порядке браузер должен выполнять запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 18:01 |
|
||
|
Reverse AJAX, несколько окон
|
|||
|---|---|---|---|
|
#18+
private, Дофига способов есть. Не используй постоянное соединение. Это - бред сивой кобылы, вообще-то. Поверь мне, эту штуку придумали для дураков. Когда объяснишь "чегонадо" - будет и ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 20:35 |
|
||
|
Reverse AJAX, несколько окон
|
|||
|---|---|---|---|
|
#18+
Сделать страницу обновляемой с сервера, как в гмайл, и возможность открывать множество окон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 21:38 |
|
||
|
Reverse AJAX, несколько окон
|
|||
|---|---|---|---|
|
#18+
Я не пользуюсь гмейлом и код смотреть не хочу. Я знаю, что гуглы такой бредятины, как постоянное соединение не используют, потому что - джедаи в яваскрипте и в хттп. Сервер потому так и называется (слуга тоесть), что все действия он исполняет исключительно по запросу клиента . Если что-то не так, значит, плохо разбираетесь в клиент-серверных технологиях. Если таки хотите обновлять страницу (это очень плохое решение, правда я использую такое для онлайн игр, а также для позиционирования объектов в реальном масштабе времени на карте по данным с датчиков) - грузите данные аяксом по таймеру и встраивайте их в страничку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2009, 21:50 |
|
||
|
Reverse AJAX, несколько окон
|
|||
|---|---|---|---|
|
#18+
Ты однозначно не прав. Кто-то придумал и keep-alive, и Comet, и Continuations - и вовсе не дураки. Самое уродское решение (которое я, кстати, никогда не использую) - это запрос по таймеру. Меня это коробит. В конце-концов, есть NIO, который как раз и работает с незакрываемыми соединениями - удобно, быстро, правильно и держит сотни тысяч соединений на одном серваке (!!!). Разобравшись получше, я отошел от Комет - есть получше технологии, но в целом это направление очень поощряю ... Сегодня не в состоянии отвечать по существу - завтра отвечу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 02:12 |
|
||
|
Reverse AJAX, несколько окон
|
|||
|---|---|---|---|
|
#18+
Ранее использовал похожую реализацию, правда, DWR не использовал, юзал механизм, построенный на неблокирующих библиотеках Jetty - только библиотеки, так как сервером выступал Tomcat. Достаточно сложно и неудобно. Важно, что данная технология не предоставляет простых механизмов определения состояния клиента - именно то, о чем ты говоришь: отключен, рефреш или другое окно. Для определения уникальности приходилось извращаться - создавать уникальный идентефикатор и передавать его серверу, id_session не проходит, так как в разных вкладках браузера номер сессии одинаков, а там хранил пары номер сессии - идентефикатор, по которым и вычислял состояние. Сейчас использую CometProcessor из Томкатовского пакета NIO - реализация уровнем повыше, чем у Jetty. Одно из самых важных "удобств" - определение состояние клиента для сервера и состояние сервера для клиента. Есть несколько состояний изменения и разрыва соединения, на что можно реагировать. В предыдущем посте погорячился, назвав это не Кометом, это не так - просто более совершенная реализация технологии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2009, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=286&tid=1454536]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 309ms |

| 0 / 0 |
