Игровой сервер Java с клиентом Android - PullRequest
3 голосов
/ 05 сентября 2011

Я собираюсь начать игровой проект.Это будет сетевая игра с клиент-серверной архитектурой с Java-сервером и веб-клиентами и клиентами Android.Влияние на низкую пропускную способность (для использования на мобильных устройствах) и быстрый отклик.Какие технологии / библиотеки существуют для связи клиент-сервер?У меня есть некоторый опыт работы с веб-приложениями (GWT / Vaadin и сервлетами), но я понятия не имею, что использовать при реализации игрового сервера, в основном для связи.

Я знаю, что могу использовать сокеты Java с сериализацией объектовили, может быть, JSON для передачи данных от клиента к серверу, но я не знаю, насколько эффективны эти подходы с точки зрения пропускной способности?Или есть более подходящие, чем эти?Достаточно просто указать мне правильное направление.

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

Ответы [ 3 ]

1 голос
/ 06 сентября 2011

Что касается клиентских библиотек Android, есть два основных варианта.Первый - это просто пакет java.net. *, В котором вы будете в основном использовать HttpUrlConnection .

Лучшим вариантом является использование Apache HTTP-пакета , который также входит в стандартную комплектацию Android SDK.Это дает вам гораздо больше контроля / гибкости / многословия при работе с сетевыми подключениями.

Вот достойный пример того, как использовать клиентские библиотеки Apache.Я предлагаю использовать их, так как пакеты java.net действительно подходят только для самых простых запросов GET.

Я предлагаю использовать метод JSON, потому что тогда вам не нужно писать бэкэнд Java-сервлетадесериализовать объекты Java.Бэкэнд может меняться независимо от клиента.

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

Основная проблема, если вы используете WebTechnologies, чем вы не можете реализовать эффективный способ реализовать связь от сервера к клиенту ...

Клиент-сервер по HTTP GET работает нормально, но вы должны использовать какую-то Comet для реализации обмена данными между сервером и клиентом.

Вот почему обычное старое tcp-соединение через сокет может быть лучше для связи с клиентом, особенно с клиентом Android.

Но реализация его с сокетом tcp прекрасно работает с android, но не с браузером.

Мое решение: реализовать коммуникацию через WebSocket.

WebSockets (часть HTML5) - это расширение HTTP для обеспечения полнодуплексной связи между клиентом и сервером.

Самый крупный веб-браузер, поддерживающий WebSocket, например Firefox 4, Chrome 9, Opera 10.7 НО НЕ Internet Explorer (поддержка запланирована в IE 10, подключение к Windows 8)

А для Android существуют также Java-библиотеки для реализации связи, и я ожидаю, что они также хорошо работают с Android.

Expample: http://code.google.com/p/weberknecht/

Для серверной части: поддержка Servlet API 3.0, например Jetty 8

По моему мнению, WebSocket спас бы проблему, поэтому вы можете реализовать один сервер, который поддерживает WebSocket и взаимодействовать через WebSocket с клиентом Android, а также с клиентом браузера (кроме Internet Explorer)

0 голосов
/ 05 сентября 2011

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

...