2010-10-23 2 views
28

Я хочу создать простой сервер с низкой нагрузкой. Цель состоит в том, чтобы предоставить нескольким клиентам javascript доступ к некоторым функциям, реализованным в Java через WebSockets. Я ищу лучшую библиотеку для этого - она ​​должна быть простой, надежной и т. Д. Теперь я рассматриваю 3 альтернативы - jWebSocket - jetty - netty Что лучше? Или может быть что-то еще?Лучшая структура Java для серверных веб-сайтов

Заранее спасибо

+1

JEE7 теперь поддерживает Websocket. См. Ответ SO [здесь] (http://stackoverflow.com/a/18555847/1285418). –

ответ

13

jWebSocket теперь включает в себя двигатель Jetty 8.0, включая SSL, и включает в себя множество приятных для использования вещей. Он обеспечивает кросс-браузерные и кросс-платформенные совместимые клиенты, даже больше мобильных приложений, например. под Android, Symbian и BlackBerry. Сервер может быть легко расширен с помощью подключаемого модуля и уже включает в себя множество из них (например, для аутентификации/авторизации, JDBC, SMTP, XMPP/Jabber, RPC, Twitter, Filesharing, Chat и т. Д.). Просто проверьте это ... http://jwebsocket.org. Ждем ваших отзывов.

С уважением Alex

+0

Я новичок в веб-сокетах Java. Мне нужно создать Java-клиенты, которым необходимо обмениваться одноранговой связью с использованием имени канала, я хочу использовать Jweb-сокет, но я не могу начать, так как я не знаю, как создать мой частный сервер, имеющий в нем веб-сокет. Должен ли я создать сервлет и сделать это конечной точкой веб-сокета? или это их каким-либо другим способом? любезно с нетерпением жду ответа @ user502448 –

14

Я бы пошел с проверенными серверами сервлетов Java: Jetty или Resin. Оба были расширены для обработки WebSockets:

Jetty WebSockets

Resin WebSockets

Мой личный выбор будет Jetty, так как это очень простой в использовании и я использую его в качестве встроенного сервера в нескольких проектах.

Есть также некоторые новые дети на блоке, такие как Atmosphere и jWebSocket, но для серверов я предпочитаю идти с проверенным решением. Jetty и Resin также являются родовыми серверами Servlet, поэтому вы можете использовать один продукт для всех ваших потребностей в обслуживании.

+1

Еще один вариант: http://activemq.apache.org/websockets.html –

+0

Можно ли их развернуть на tomcat? Мне нужна библиотека с несколькими контейнерами. – Jus12

+3

@Peter Knego Ссылки для [Jetty WebSockets] (http://blogs.webtide.com/gregw/entry/jetty_websocket_server) и [Resin WebSockets] (http://caucho.com/resin-4.0/examples/websocket- java /), которые вы указали, делают ошибку _404 - page not found_. – Visruth

6

FYI, Atmosphere работать поверх смолы, GlassFish и Jetty. Атмосфера освобождает вас от застревания с одним сервером, предоставляя вам переносимость Websocket среди серверов Websocket. Он также предлагает клиентскую библиотеку, которая может выбрать лучший транспорт в случае, если веб-обозреватель не поддерживается браузером. Поэтому вы не можете сравнить Атмосферу с Jetty или Rsin

0

Следите за моим блогом. Я буду готов к выпуску когда-нибудь в недалеком будущем. Легкость была подчеркнута во всем этом, но это также быстро. Я еще не знаю, насколько он будет расти до более высоких нагрузок. Но я некоторое время работаю над демо с относительно низкой нагрузкой и тем, что у меня работает. (Я буду испытывать большие нагрузки позже и убедитесь, что он может быть увеличил.)

http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html

0

Если вы ищете инфраструктуры вокруг управления сообщениями, пользовательские группировки («комната»), а также синхронизации данных («общие переменные»), вы можете рассмотреть вопрос о Union Платформе:

http://www.unionplatform.com

[ Полное раскрытие: я являюсь одним из соавторов Союза]

0

Почему вы просто не пишете свое приложение на открытом стандарте, таком как JMS, и позволяете клиентам сидеть на шине JMS в качестве клиентов сообщений? Весь смысл websockets заключается в том, чтобы принести любой собственный TCP-протокол непосредственно клиенту, а не преобразовывать его с вашего конца на http-запрос/ответ.

Ваши задние службы будут разговаривать с брокером JMS, таким как ActiveMQ, и ваши клиенты говорят AMQP в браузере с помощью Javascript API, который выглядит так же, как JMS API на Java. Все, что вам нужно для этого - это шлюз websocket, например Kaazing имеет такой шлюз, все, что он делает, направляет ваш трафик JMS TCP на веб-клиентов через веб-узлы. Они также обеспечивают разветвление, так что вы не перегружаете свою JMS-шину, т. Е. Вы просто используете несколько соединений с брокером, чтобы разгрузить миллионное соединение с клиентом браузера.

Суть в том, что вам не нужно связывать себя с какой-либо конкретной платформой. Придерживайтесь стандартов, таким образом у вас есть 100% -ная свобода для замены компонентов по мере изменения вашей среды.

3

Возможно, вам стоит попробовать Bristleback Server? Используя Bristleback, вы можете выбирать из нескольких движков WebSockets, таких как Jetty, Netty и Tomcat. У вас может быть автономный сервер, а также веб-приложение, использующее WebSockets (Jetty и Tomcat 7). Bristleback использует Spring Framework. Если вы работаете с веб-фреймворками, такими как Struts, Stripes или Play !, вам будет очень легко начать. Конечно, у Bristleback есть своя клиентская библиотека JavaScript для еще более простой разработки.

Полное раскрытие информации: Я являюсь одним из соавторов сервера Bristleback.

+3

Я думаю, что полное раскрытие информации в порядке – raam86

3

Я бы также добавил vert.x к списку. Он может использовать серверные веб-узлы и SockJS (эмуляция веб-узлов, когда браузер их не поддерживает).

Обновление:
Undertow http://undertow.io также поддерживает websockets.

4

В то время как я много ценю реализации JWebsockets и Autobahn, я предпочитаю Atmosphere.

Ramp-Up :: Время разгона низкое. Франсуа Аркан прилагает много усилий для тестирования и примеров, помогая каждому достичь быстрых побед. (И я понятия не имею, почему он способен так быстро реагировать на любые архитектурные вопросы, которые я поднимающихся. Впечатляет.)

Обслуживание Perspective :: Для меня, ремонтопригодность является фундаментальным, если программное обеспечение выходит за рамки основного выпуска версии 1.0 +0,0. Проект поддерживается на верхнем уровне Maven-POM с правильно построенной иерархией. Это предотвращает несовместимость библиотек. Библиотеки ссылаются на правильный уровень. Это хорошо сделано.

технические/Функциональная перспектива :: Он предлагает клиент библиотеку Java SE (wasync), которые могут либо сделать нативный WebSocket связь (OnMessage) или построить на Джерси REST аннотациях (@Path).Впоследствии это делает его настолько простым, насколько это возможно, с сохранением открытого соединения для подписки и популярной парадигмы удаленных процедур (RPC). Это обычная попытка объединить эти две парадигмы. См. Также http://wamp.ws/, который подходит для того же подхода. Кроме того, библиотека предлагает установить свойства QoS, такие как надежность (например, в случае отсоединения клиента) и надежность (кэширование непоставленных сообщений). Это отлично подходит для профессионального программного обеспечения.

Смежные вопросы