![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Как решается в J2ЕЕ следующая задача?
Клиентское приложение отображает постоянно обновляемую коллекцию данных с сервера. Например, это список сообшений участников чата. Каждое новое сообшение добавляется в конец списка. Клиентское приложение при первом обращении загружает весь список, а затем периодически запрашивает у сервера обновления. Очевидно, что сервер может каждому сообщению присваивать уникальный возрастающий ключ - автономер, например. И отсылать клиенту пару - номер и само сообщение. Клиент, в свою очередь, в запросе обновлений отправляет серверу номер последнего полученного им сообщения. Сервер вернет новые сообшения, номер которых превышает номер, имеющийся у клиента. Это гарантирует, что сообшения не будут потеряны при пересылке. Какие стандартные способы реализации этого средствами J2ЕЕ? |
|||
|
||||
| eros2 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 31.5.2010 Репутация: нет Всего: нет |
Посмотрите в сторону JMS.
|
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Да, JMS гарантирует, что сообщения не будут потеряны - клиент подтверждает серверу каждое посланное сообщение. Но как синхронизируется начальное состояние (весь список) с потоком обновлений? Наверное надо все, и начальное состояние и обновления слать через JMS. А какие еще варианты? И мессажинг - это асинхронный способ коммуникации с постоянно соединенным клиентом. A eсли более простой вариант, синхронный, т.е. поллинг, последовательние запросы? |
|||
|
||||
| eros2 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 31.5.2010 Репутация: нет Всего: нет |
Ну незнаю...
Я бы сделал наверное так - есть таблица с сообщениями и в таблице поле "сообщение прочитано (забрано?)". Клиент забирает непрочитанные (незабранные?) сообщения, выводит на экран и ставит признак "прочитано". чтоб клиент не поллил постоянно - кидать ему jms-сообщение когда для него есть данные. Т.е. - jms-сообщение не несёт никакой инфы кроме уведомления о новых данных. Клиент просто забирает незабранные данные. И не нужно постоянно поллить, передавать новые ИДы и т.п. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Понятно, спасибо.
|
|||
|
||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
COVD,
Для чата удобно использовать comet (в GlassFish и Jetty имееются comet сервера). Обычно это используется с js клиентом, но наверняка можно и с более "толстыми" клиентами использовать. Это сообщение отредактировал(а) Vasay - 2.8.2010, 21:39 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Спасибо за пример. Комет - это, на мой взгляд, попытка реализовать идеи мессажинг подручными средствами ( протокол HTTP и клиент на JS ). Как я уже выше предположил, возможность синхронизации начального состояния и последуюших обновлений в мессажинг системе обеспечивается отправкой начального состояния и последующих обновлений через одно постоянное соединение. Наверное и в комет так же. A eще как обеспечивают синхронизацию? Что предложил бы J2EE сертифицированный специалист? Мессажинг? Это сообщение отредактировал(а) COVD - 2.8.2010, 22:35 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |