![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Fly1410 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 15.7.2006 Репутация: нет Всего: нет |
Надо написать шашки. Что бы в них можно было играть с разных компов.
Есть сервлет на которых каждый игрок посылает свой ход и этот ход отсылается сопернику. Я беру HttpServletResponse сохраняю его и когда приходит новый запрос на сервлет отправляю ответ в сохраненный HttpServletResponse. Только вот когда сервлет получает новый запрос то сохранненый HttpServletResponse закрывается и посылается пустым. Что можете посоветовать в такой ситуации делать? И как вообще можно реализовать взаимодействие двух компьютеров через сервлет? |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Самый простой путь: положить какой-нибудь объект (например расположение шашек на доске) в application scope и обеспечить к синхронизированный доступ к его свойствам и методам. |
|||
|
||||
| Fly1410 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 15.7.2006 Репутация: нет Всего: нет |
что это? и как этим пользоваться? |
|||
|
||||
| Maksym |
|
||||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Fly1410
Это контекст, ассоциированный с web application. Одному запущенному web application соответствует один контекст, в котором можно хранить данные доступные всему application (во всех сессиях). В сервлете можно положить данные так:
Извлечь так:
Это сообщение отредактировал(а) Maksym - 5.7.2007, 13:05 |
||||
|
|||||
| eXcile |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 8.2.2007 Репутация: нет Всего: 5 |
посмотри здесь http://scopes.sourceforge.net/documentatio...tion-scope.html Это сообщение отредактировал(а) eXcile - 5.7.2007, 13:06 --------------------
Не становитесь рабом шаблона [Винсент Ван Гог] |
|||
|
||||
| Fly1410 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 15.7.2006 Репутация: нет Всего: нет |
Игрок сделал ход. Этот ход отправился на сервлет. Сервлет его сохранил, обновил расположение шашек на доске. А как вернуть ход соперника? Ведь для этого я должен дождаться нового запроса: запроса с ходом соперника. А когда соперник сделал запрос то мой HttpServletResponse закрывается автоматически:(
|
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Код приведите.
-------------------- ![]() |
|||
|
||||
| Fly1410 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 15.7.2006 Репутация: нет Всего: нет |
вот:
|
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Fly1410
Не понятно в чем проблема. Есть сессии обоих игроков, есть расшаренный на уровень всего приложения объект состояния партии. При каждом запросе анализируешь это общий объект, изменяешь его если делается ход, возвращаешь ход соперника, изменяешь состояние "чья очередь ходить" и все тут. HttpServletResponse здесь не при чем.. Добавлено через 3 минуты и 55 секунд Fly1410 1. Для простоты используй метод service() для обработки запроса. 2. Не понимаю зачем тебе response?? Он существует и имеет смысл только в рамках обработки запроса.. Просто пиши в него результат обработки и все. 3. Для начала, попробуй положить что нибудь в конеткст сервлета в одном запросе и достать в следующем (методом, который я описал), а потом продолжим. |
|||
|
||||
| Fly1410 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 15.7.2006 Репутация: нет Всего: нет |
не до конца уловил такой момент...
первый ход белых e2-e4. В сервлете я получаю ход обновляю расположение фигур (в application scope) и что дальше...какой ответ? Ведь чёрные ещё не походили. А когда черные походили e7-e5 как мне белым отправить ход? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Fly1410, протокол HTTP сам по себе направлен только от клиента к серверу. Сервер не может инициировать соединение, он может только отвечать на запрос клиента. Поэтому взаимодействие может быть реализовано через периодические (и частые) запросы от клиента.
Посмотри в сторону Ajax-технологий. Возможно, это то, что тебе нужно. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| fixxer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Простите, не удержался Добавлено через 57 секунд
ИМХО, это overkill -------------------- ![]() |
||||
|
|||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет. Есть такая Ajax-либа на Java DWR Direct Web Remoting - там есть пример чата. Один юзер может вообще не посылать сообщения, но видеть то, что ему послал собеседник. Такой механиз называеться "комета".
Почитай, посмотри, если что спрашивай -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Тут вообще сначала нужно прояснить вопрос: клиент тонкий (web) или GUI?
-------------------- ![]() |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Fly1410
Ajax это конечно здорово, но мы пока с сервлетами не разобрались В данный момент пользователь может узнать об ответе другого игрока, обновив страницу в браузере. Можно вставить в страницу небольшой JavaScript, который будет ее обновлять, например, каждые 15 секунд. Этого будет вполне достаточно для вдумчивой неторопливой партии Когда походят черные, они изменяет наш common объект состояния партии. При перезагрузке страницы со стороны белых они получат сообщение о том, что черные походили и теперь их очередь. fixxer Речь в теме в общем то шла о сервлетах.. |
|||
|
||||
![]()
|
| Правила форума "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. |