У меня есть опыт года при написании клиентского кода, но ни одного с материалом сервера. Я хочу ограничить вопрос немного, таким образом, я упрощу то, чего я пытаюсь достигнуть.
Я хочу записать серверный код, таким образом, что два клиента (Браузер или iPhone / Android) могут соединиться, когда два плеера соединились, они видят, что таймер считает в обратном порядке для обнуления. Часы были бы, синхронизируются на сервере, и клиенты исключительно идентифицировались бы.
Проблема здесь с подключением слова, что люди используют для многопользовательских игр? Открыть сокет TCP для двусторонних связей? Можно сказать, что я не действительно уверен, о чем я говорю. Я надеялся использовать AppEngine, но я не уверен, подходит ли это, поскольку это - базирующийся запрос.
У меня есть некоторый опыт с Java и хотя Erlang походит на лучший выбор, это - что-то, с чем я просто хочу играть и выставить быстро, таким образом, Java был бы легче. Я просто должен знать лучший способ подключить плееры и т.д.
Спасибо,
Gav
Я предлагаю рассматривать настольные и мобильные системы как равных клиентов. Какие есть варианты?
Вы пишете сервер сокетов, который будет принимать соединения от клиентов. Но тогда вам нужно написать еще какой-нибудь сокет-клиент, даже 2х - для десктопа и для мобильной ОС. И пользователю нужно будет установить этот клиент.
Вы запускаете веб-сервер (какая технология вам нравится). Он предоставит некоторые веб-службы, которые будут одинаково доступны как для настольных, так и для клиентских ОС. Но все же нужно написать клиентское приложение (опять же 2х).
Вы запускаете веб-сервер и делаете все функции доступными по стандартному протоколу HTTP. Таким образом, вам даже не понадобится клиент - почти на каждом компьютере или мобильной ОС установлен хотя бы какой-нибудь веб-браузер. JavaScript обеспечит динамическое обновление вашего тикера.
Я ни в коем случае не специалист по сетевому общению, но если вы не против потери нескольких пакетов (или проверки ошибок в программном обеспечении) и вам нужна быстрая и экономичная связь, вы можете использовать UDP . Я думаю, что большинство программ с конфиденциальными данными и потокового мультимедиа используют этот протокол, чтобы избежать задержек и уменьшить размер пакетов.
Несколько лет назад я реализовал клиент-серверное приложение с java и ServerSocket ( http://java.sun.com/j2se/1.4.2/docs/api/java/net/ServerSocket.html ). У вас также есть версия SSL.
Итак, вы создаете ServerSocket и ждете подключения. Когда клиент подключен, вы создаете поток, который будет обсуждать с этим клиентом протокол, который вы создали.
Если найдете этот небольшой фреймворк:
http://www.bablokb.de/jcs/jcs.html
Одна из самых сложных вещей - это создать свой протокол, хороший способ научиться его создавать - это понять, как работает FTP (или HTTP. ..).
Есть хорошая серия статей о Networking для программистов игр от человека, который зарабатывает этим на жизнь.