JAVA push с сервера на клиентов - PullRequest
4 голосов
/ 28 марта 2012

Я бы хотел, чтобы клиенты опрашивали друг друга через сервер без задержки (= без интервала опроса).

Пример: сервер S, клиенты A и B

Клиент A хочетзапрос клиента B. Клиент A сделает запрос к серверу S, никаких проблем там нет.Тогда сервер S должен иметь возможность запрашивать клиента B, но как это сделать без опроса?

Все технологии node.js / APE (для PHP) предназначены для Интернета, однако я не используювеб-сервер для этого.Есть ли в Java что-то похожее на технологию / среду push, которая не является веб-сетью?

Я бы действительно предпочел решение, которое не требует, чтобы каждый клиент использовал свой зарезервированный порт (я не хочу в конечном итогенапример, с 1 WebService для каждого клиента)

Примечание: все клиенты находятся на одном компьютере.

Ответы [ 3 ]

5 голосов
/ 28 марта 2012

Пара опций ...

  • Связь через обычную розетку.java.net.Socket, java.net.ServerSocket.Максимальная гибкость, но требует знания низкоуровневого API / концепций TCP / IP.

  • Старый добрый RMI.Уровень RPC на основе Java поверх TCP / IP.Хорошо работает, когда клиент и сервер находятся в Java и, как правило, в одной подсети.Может вызвать проблемы, когда клиент и / или сервер натянуты.

  • Spring Remoting, на самом деле это довольно прилично.

  • Двунаправленные веб-службы.т.е. клиенты размещают свои собственные WS, которые сервер вызывает, когда ему необходимо выполнить обратный вызов.

  • JMS, как кто-то уже упомянул.

  • Распределенные данныеStructures, Check out http://www.hazelcast.com/

Множество опций на выбор, нет необходимости в веб-сервере.

3 голосов
/ 28 марта 2012

Если вы действительно не хотите использовать веб-сервер, тогда я бы проверил JMS .При этом все крутые ребята в наши дни используют веб-серверы, так как протоколы настолько распространены.

0 голосов
/ 28 марта 2012

Ваш вариант использования требует протокола обмена сообщениями.Мы действительно не знаем масштаб вашей проблемы, но вы уже сказали, что хотите, чтобы сервер обменивался запросами между клиентами, поэтому я бы предпочел существующее решение, а не свой собственный подход.

JMS былупоминается и, безусловно, является жизнеспособным решением на основе Java, другим может быть XMPP , который является протоколом связи в реальном времени, обычно используемым для обмена мгновенными сообщениями.

Это открытый стандарт, который имеет как сервер, так и клиентподдержка на всех основных языках и платформах.Это позволит вам иметь автономные приложения, веб-приложения и приложения для мобильных устройств, способные взаимодействовать друг с другом.Единственный потенциальный недостаток для вашего варианта использования - это то, что он основан на тексте.Так как вы не сказали, какие запросы вы хотите передавать туда и обратно, я не знаю, будет ли это соответствовать вашему счету.

Вы можете использовать Smack для разработки на стороне клиента.на Java и любом другом сервере ОС.

...