Сервер Websockets на Java (или PHP) - PullRequest
       6

Сервер Websockets на Java (или PHP)

3 голосов
/ 01 декабря 2011

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

  • , написанные на Java или PHP, так как это языки, которые в настоящее время используются и используются всеми программистами проекта.Поскольку кажется, что пока нет многообещающих реализаций PHP, я стремлюсь сконцентрироваться на сайте Java.
  • как можно быстрее.Мы не ожидаем слишком интенсивного использования в производственной среде, но мы должны иметь возможность синхронизировать два браузера на независимом хосте практически в реальном времени.
  • легко расширяемый.Нам потребуется реализовать наш собственный протокол поверх веб-сокетов, поэтому мы хотим максимально возможной гибкости.
  • простой в использовании, хорошо документированный и активно разработанный.Поскольку нам нужно довольно быстро приступить к реализации первого запуска, и, поскольку я ожидаю, что со временем у разработчиков появятся какие-то изменения, было бы здорово, если бы не было сложно заняться программированием сервера.

Я уже посмотрел на некоторые серверы / фреймворки, которые выглядят многообещающими, например, Jetty, Netty и jWebSocket.Я также нашел некоторые старые обсуждения этой темы.Тем не менее, я был бы рад некоторым текущим событиям или рекомендациям тех из вас, кто уже использовал Java (или PHP) для работы с Websockets.Есть ли какая-то реализация, которая особенно подходит или которую мы абсолютно не должны использовать?

Редактировать: Для ясности: когда я говорю о реализации нашего собственного протокола поверх Websockets, я имею в виду наличие какого-то плагинамеханизм, чтобы мы могли использовать Websocket для отправки XML-сообщений на сервер, а затем использовать плагин для интерпретации их в некоторых действиях сервера, как нам нравится.Я предполагаю, что каждая реализация сервера также поддерживает это, но было бы хорошо, если бы было не так сложно написать такие плагины.

1 Ответ

1 голос
/ 01 декабря 2011

У меня нет опыта работы с PHP, поэтому я выскажу свое мнение о Java (и стороне Python).

Для Java:

У вас есть очень распространенный и безопасный выбор Tomcat. Это один из наиболее активно разрабатываемых серверов, с открытым исходным кодом, большой поддержкой / помощью со стороны очень большого сообщества. Судя по тому, что я прочитал (но не тестировал), он может быть достаточно масштабируемым, а также имеет очень зрелую консоль для мониторинга различные показатели для вашего сайта.

У вас также есть другие варианты, такие как смола Caucho's, у которой очень маленькая, но умная команда, которая активно развивает свой веб-сервер. Их новая служба сердцебиения обеспечивает хорошую степень масштабируемости (опять же из того, что я читал).

И еще у вас есть приложение Google, которое все о масштабируемости. Их API (как на стороне сервера, так и на стороне клиента) начали ориентироваться на веб-приложения в реальном времени, поэтому создание высокопроизводительных веб-приложений немного проще, не беспокоясь об оптимизации, связанной с сервером, которую вам часто приходится делать с другими серверами. , У них есть API для создания «каналов» между сервером и клиентом для приложений реального времени. Команда AppEngine также имеет новый API MapReduce для быстрого и эффективного анализа данных. По этим причинам и личному мнению, что они являются пионерами новых веб-технологий / стандартов, я лично склоняюсь к AppEngine. Это бесплатно, если вы сохраняете использование процессора / данных на низком уровне, но если вам нужно полномасштабное развертывание, оно становится дорогостоящим, поэтому проводите исследования. Если ваш проект больше для развлечения / школы, его бесплатных квот достаточно, и все его инструменты разработки / API бесплатны, поэтому он идеален.

Для Python:

Я больше Java, чем Python, но Python, безусловно, отличный язык, и его очень очень легко выучить. И причина, по которой я рекомендую Python для рассмотрения, заключается в том, что AppEngine также позволяет разработчикам выбирать Python. Автор / создатель языка Python теперь входит в команду AppEngine, поэтому, хотя API-интерфейсы Python и Java практически одинаковы, у них иногда есть новые / лучшие API-интерфейсы для Python. Например, я думаю, что API хранилища данных, предлагаемый с Python, немного проще и оптимизирован для хранилища данных Google. Кроме того, поскольку вы будете использовать python, вы можете использовать Django с AppEngine.

Второй выбор, о котором мне недавно стало известно, - это веб-сервер торнадо, который был разработан FriendFeed, а затем куплен и использован Facebook. Это также активно развивается. Но причина, по которой я говорю об этом, заключается в том, что Tornado, как и AppEngine, уделяет большое внимание производительности и масштабируемости веб-приложений. У меня нет опыта работы с ним, но я заинтересовался его технологией просто потому, что никто не может оспорить, что Facebook требует очень высокопроизводительный / масштабируемый веб-сервер.

Несколько последних мыслей:

В целом вы обнаружите, что не очень сложно создать собственный протокол поверх API, предоставляемых большинством веб-серверов (даже Asp.NET MVC). Но из того, что я смог протестировать с помощью AppEngine, он действительно фокусируется на гибкости в отношении того, какой протокол построен на его основе. Мне кажется, это просто RPC-сервер, работающий поверх HTTP. И это становится еще более очевидным, если вы используете Python только из-за некоторых языковых конструкций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...