Возможно ли, чтобы веб-сервис Java отправлял клиенту уведомление от Apache Tomcat? - PullRequest
2 голосов
/ 20 августа 2011

Ну, в последние несколько дней я пытаюсь представить планы своего шахматного сервера на столе.Планируется сделать несколько веб-сервисов, которые взаимно взаимодействуют.Планируется, что веб-службы будут созданы с использованием языка Java и развернуты на Apache Tomcat 7.0.20 с ядром веб-службы Axis2 1.6.0.

Пока что будут веб-служба аутентификации, веб-служба пула игроков, веб-валидациясервис и веб-сервис «логика бизнеса», который будет единственным веб-сервисом, известным клиентскому приложению.Все запросы клиентов будут выполняться через эту службу и переадресовываться соответственно.

Все ходы игроков должны проходить через веб-сервисы из-за проверки ходов, истории и так далее.Проблема возникает, когда другому игроку необходимо сообщить о сыгранном ходу противника.Постоянный клиентский запрос (чтобы выяснить, является ли ход противника сыгранным) в отношении обслуживания, не подлежит сомнению, поскольку изменение хода игрока должно быть немедленным, когда противник разыгрывает его ход.Как добиться этого с помощью веб-сервисов Java и более ранних технологий?Можно ли в веб-сервисе связаться с противником игрока и сообщить ему ход противника?Есть ли другой способ сделать это с помощью этой области технологий?

Редактировать: Клиентским приложением планируется стать настольным приложением, возможно, Java или C #.

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

Один из вариантов принудительной связи между Tomcat и веб-браузером: Comet (иногда называемый CometD или Bayeaux ).

Отстатья вики:

Comet - это модель веб-приложения, в которой длительный HTTP-запрос позволяет веб-серверу передавать данные в браузер,без явного запроса браузера.

(Примечание: Emphasis Mine)

Это означает, что сервер может уведомитьКлиент ожидающих изменений без браузера специально опрашивает.С хорошим JavaScript-фреймворком (таким как Dojo или этот плагин jQuery ) вы можете легко работать со старыми браузерами, опрашивая.

Некоторые хорошие ссылки для получения дополнительной информацииComet:

Надеюсь, это поможет.

0 голосов
/ 20 августа 2011

Вы не указываете свою клиентскую технологию (браузер? Приложение для рабочего стола?)

В любом случае, прямого решения, если вы обращаетесь к домашним пользователям, не существует.Чтобы работать с домашними пользователями, вам нужно, чтобы они открыли / NAT необходимый порт для их компьютера, чтобы вы могли получить доступ к их ПК.Это очень сложно для обычного домашнего пользователя.

Для браузера это еще сложнее, поскольку они клиенты , а не серверы.Возможно, для моделирования сервера внутри браузера может быть использована какая-то инфраструктура (я думаю, что есть хотя бы один, но я не могу вспомнить его имя), но это сработало бы, просто повторяя вызовы ajax на сервер, пока не было сделано изменение.*

И, наконец, если вы проверяете сервер каждую секунду, задержка будет достаточно низкой даже для «быстрых шахмат».

...